search

Home  >  Q&A  >  body text

angular.js - ng-if 定义一个方法,返回字符串,为什么不对

这样写是对的

<li ng-repeat="(x, y) in item" ng-if="x!='a'"></li>

这样写就是输出全部的,ng-if并没有执行

<li ng-repeat="(x, y) in item" ng-if="test()"></li>

...

$scope.test = function(){
    return "x!='a'"
}
PHP中文网PHP中文网2744 days ago535

reply all(2)I'll reply

  • 漂亮男人

    漂亮男人2017-05-15 17:06:14

    Firstly, you did not pass x in, and secondly, what you returned was a string, and the string is always correct. Try writing it like this:

    <li ng-repeat="(x, y) in item" ng-if="test(x)"></li>
    
    $scope.test = function(x){
        return x!='a';
    }

    reply
    0
  • 为情所困

    为情所困2017-05-15 17:06:14

    Tell you a concept, the things in ng-if are called angular expressions, and angular will parse this expression.
    "x!='a'" is actually $scope.x != 'a'. By the way, this $scope is < The scope generated by code>ng-repeat. "x!='a'"其实就是$scope.x != 'a',顺带一提这个$scopeng-repeat产生的scope。
    下面的test()当然会变parse成$scope.test()在ngRepeat的scope中没找到方法,所以从父scope中找到了你的方法, 然后你的方法return的是一个字符串, 所以判断永远是trueThe following test() will of course be parsed into $scope.test(). No method was found in the scope of ngRepeat, so you found your method from the parent scope. , then your method returns a string, so the judgment is always true.

    reply
    0
  • Cancelreply