2016-03-11 49 views
0

我正在使用吴开关如下。这是ng-switch的正确用法吗?我不希望它在一个数组中,因为我正在使用一个范围变量。吴开关不工作

在我的HTML中,我已经定义它如下。 userRole是我希望我的搜索基于的变量,在when中,我使用了基于我的div标签内容应该使用的值。

<div ng-switch on ="userRole"> 
    <div ng-switch-when="admin"> 
    [...] 
    </div> 
    <div ng-switch-when="user"> 
    [...] 
    </div> 

我无法访问ng-switch的功能,而且我的整个内容部分都消失了。

在我的js文件我已经定义如下:

if(loginModel.authorities[0].authority=="ROLE_ADMIN"){ 
    console.log("Me here"); 
    $scope.userRole="admin"; 
} 
else 
if(loginModel.authorities[0].authority=="ROLE_USER"){ 
    $scope.userRole="user"; 

} 
else{ 
    $scope.userRole="guest"; 
} 

但我的屏幕不显示任何东西,这让我不知道我应该如何使用NG-开关。我不想使用ng-hide/ng-show。

+0

显示变量'$ scope.userRole'在'的console.log()'。因为'ng-switch'按预期工作。 [jsfiddle]上的示例(https://jsfiddle.net/Stepan_Kasyanenko/zcqsepxr/)。 –

回答

0

这里是一个整洁的小提琴,我发现如何ng开关工作....你使用ng开关的方式是完全有效的。我猜你的userRole没有任何值使它失败,你可以仔细检查一下。

<div ng-controller="LoginCheckCtrl"> 
    <div ng-switch on="loginData"> 
     <div ng-switch-when="false" ng-include="'login'"></div> 
     <div ng-switch-when="true" ng-include="'logout'"></div> 
    </div> 
</div> 

<script type="text/ng-template" id="login"> 
    <button ng-click="login()">Login</button> 
</script> 

<script type="text/ng-template" id="logout"> 
    <button ng-click="logout()">Logout</button> 
</script> 

控制器代码:

var app = angular.module('myApp', []); 

function LoginCheckCtrl($scope) { 
    $scope.loginData = false 
    $scope.login = function() { 
     console.log($scope.loginData ? 'logged in' : 'not logged in'); 
     $scope.loginData = true; 
    }; 
    $scope.logout = function() { 
     console.log($scope.loginData ? 'logged in' : 'not logged in'); 
     $scope.loginData = false; 
    }; 
} 

小提琴 https://jsfiddle.net/mrajcok/jNxyE/