使用ng-switch和控制器变量

时间:2015-07-11 21:24:21

标签: angularjs

我正在尝试在控制器变量上使用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>

1 个答案:

答案 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

PLNKR