我正在尝试在控制器变量上使用ng-switch
,但它没有按预期工作,或者我遗漏了一些东西。我想打开控制器中定义的user_id
。
这是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 :(得分:1)
您以错误的方式使用UnescapeDataString(string)
。您必须与在ng-switch
初始化参数中使用的表达式保持一致。这是使用开关匹配的正确方法,站在AngularJS doc。
ng-switch
由于<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