2015-07-11 57 views
0

我想在控制器变量上使用ng-switch,它不像预期的那样工作,或者我缺少一些东西。我想打开控制器中定义的user_id使用ng-switch与控制器变量

这里是一个plunkr

控制器

$scope.user_id = "5"; 

    $scope.messages = [ 
    {id: 1, body: "Scope User Message", sent_messageable_id: 5}, 
    {id: 2, body: "Other Message", sent_messageable_id: 6} 
    ] 

HTML

<div ng-repeat="message in messages"> 
    <div ng-switch on="message.sent_messageable_id"> 
     <div ng-switch-when="user_id"> 
     <!-- should be getting called but never does--> 
     {{ message.body }} 
     </div> 
     <div ng-switch-default> 
     {{ message.body }} 
     </div> 
     <div 
    </div> 
    </div> 
+0

你普拉克用一个很老的版本angularjs的'1.0.5'。这是故意的,还是可以使用新版本? – lostintranslation

+0

@lostintranslation不是故意的,我在1.3 – user2954587

回答

1

你在错误的道路使用ng-switch。您必须与初始化参数ng-switch中使用的表达式保持一致。这是使用开关匹配的正确方法,站到AngularJS doc

<ANY ng-switch="expression"> 
    <ANY ng-switch-when="matchValue1">...</ANY> 
    <ANY ng-switch-when="matchValue2">...</ANY> 
    <ANY ng-switch-default>...</ANY> 
</ANY> 

由于user_id不是表达式,所以您的考试不起作用。

我建议你使用ng-if,这似乎更适合你的情况(如果我明白你想要什么):

<div ng-repeat="message in messages"> 
    <div> 
     <div ng-if="user_id"> 
     <p>NOW getting called</p> 
     {{ message.body }} 
     </div> 
     <div ng-if="!user_id"> 
     {{ message.body }} 
     </div> 
    </div> 
    </div> 

PLNKR

相关问题