【问题标题】:AngularJS ng-if with angular expressionAngularJS ng-if 与角度表达式
【发布时间】:2015-09-22 13:52:12
【问题描述】:

查看:

<html ng-app="myApp">
....
  <body>

    <div ng-controller="myCtrl">

      <p>Current user {{loggedOnUser}}</p>

      <div ng-if="user.name == {{loggedOnUser}}" ng-repeat="user in users">
        <p>Should display</p>
      </div>

    </div>

  </body>

</html>

控制器:

angular.module("myApp", [])
  .controller("myCtrl", function($scope){
    $scope.loggedOnUser = "xxx"; // for testing purpose
    $scope.users = [
      {
        name : "xxx",
        age: "25"
      },
      {
        name : "yyy",
        age: "26"
      }
    ];
 });

如何将 ng-if 与 angularJS 表达式一起使用,或者有没有其他方法可以实现这一点? 如果我的 loggedOnUser 等于 user.name,我想显示该 div

提前致谢

【问题讨论】:

  • 您不需要明确地为loggedInUser 提供插值大括号。 $compileng-if 指令执行此操作

标签: angularjs angularjs-scope angularjs-ng-repeat angular-ng-if


【解决方案1】:

应该是

ng-if="user.name == loggedOnUser"

而不是

ng-if="user.name == {{loggedOnUser}}"

如果您愿意,您可以使用filters。但我建议你不要相信你的情况下的过滤器。请参阅下面的 sn-p,它将适用于您的上述情况。

<div ng-repeat="user in users | filter:name:loggedOnUser">

【讨论】:

  • @PratapA.K 您可以接受作为进一步使用的答案
  • 肯定会这样做!我还有一个疑问,如果loggedOnUser 的$scope 和users 数组不同呢???
  • 您必须使用servicefactory 在这种情况下,您可以将文字引用到factoryservice
【解决方案2】:

ng-if 的条件本身就是一个角度表达式。

<ANY
    ng-if="expression">
    ...
</ANY>

因此类似于:

ng-if="someVal"

将匹配 $scope.someVal 而不是字符串“someVal”
所以在你的情况下应该是:

ng-if="user.name == loggedOnUser"    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多