2017-04-26 69 views
1

角開關我想,當聲明,我的角模板和switch語句輸出必須是「你是一個用戶」做一個簡單的開關,但它說,我是一個客人。不工作時

我的代碼有什麼問題?

<p><strong>Current role</strong></p> 
<p>{{ app.currentUser.role }}</p> 
<p><strong>Role to compare with</strong></p> 
<p>{{ app.userRoles.user }}</p> 

輸出:

Current role 
user 

Role to compare with 
user 

switch語句

<div ng-switch on="app.currentUser.role"> 
    <div ng-switch-when="app.userRoles.admin">You're admin.</div> 
    <div ng-switch-when="app.userRoles.moderator">You're moderator.</div> 
    <div ng-switch-when="app.userRoles.user">You're a user.</div> 
    <div ng-switch-default>You're a guest.</div> 
</div> 

輸出:

You're a guest. 

角控制器:

function MainController() { 
    my = this; 

    my.currentUser = { role : 'user'}; 
    my.userRoles = { user : 'user' }; 

    } 

Plunker鏈接: https://plnkr.co/edit/oCKVTjfTwkwYO9UVQU6X?p=preview

回答

2

按照文檔的ngSwitch

要知道,來匹配無法表達的屬性值。它們被解釋爲文字串值以匹配。例如,ng-switch-when="someVal"將與字符串"someVal"匹配,而不是針對表達式$scope.someVal的值。

看起來你不能像目前那樣匹配app.userRoles.**。如果你使用類似的東西:

<div ng-switch-when="user">You're a user.</div> 

你應該得到想要的結果。

來源:https://docs.angularjs.org/api/ng/directive/ngSwitch

2

您的模板應該像下面,

<div ng-switch on="app.currentUser.role"> 
    <div ng-switch-when="admin">You're admin.</div> 
    <div ng-switch-when="moderator">You're moderator.</div> 
    <div ng-switch-when="user">You're a user.</div> 
    <div ng-switch-default>You're a guest.</div> 
</div> 
0

你不需要使用任何switch語句。

<div ng-if="app.currentUser.role"> 
    <div>You're {{app.currentUser.role}}.</div> 
</div> 

<div ng-if="!app.currentUser.role"> 
    <div>You're a guest.</div> 
</div>