ng-repeat |过滤器:内联不等式?

时间:2014-06-17 08:03:39

标签: javascript html angularjs

对于Angular的ng-repeat,我只看到了内联相等过滤器。但是,是否也可以内联不等式?

This fiddle说明了我的问题:

Equality filter works:
<div ng-controller="repeatCtrl">
   <div ng:repeat="o in list | filter: id = myPrecious.id">
       {{o.id}}: 
       <input type="checkbox" ng:model="o.checked" />
       {{o.checked}}
    </div>
</div>

<hr />

Inequality filter does not work:
<div ng-controller="repeatCtrl">
   <div ng:repeat="o in list | filter: id != myPrecious.id">
       {{o.id}}: 
       <input type="checkbox" ng:model="o.checked" />
       {{o.checked}}
    </div>
</div>

The documentation for ng-repeat需要 MUCH 。是否可以使用内联不等式过滤器?

3 个答案:

答案 0 :(得分:3)

是的,请看这里:http://jsfiddle.net/DLYys/1/

<div ng-controller="repeatCtrl">
   <div ng:repeat="o in list | filter: {id : !myPrecious.id}">
       {{o.id}}: 
       <input type="checkbox" ng:model="o.checked" />
       {{o.checked}}
    </div>
</div>

答案 1 :(得分:1)

您也可以这样做

$scope.someLogic = function(item) {
    return ($scope.myPrecious.id !== item.id);
};



BAD:
<div ng-controller="repeatCtrl">
   <div ng:repeat="o in list | filter: someLogic">
       {{o.id}}: 
       <input type="checkbox" ng:model="o.checked" />
       {{o.checked}}
    </div>
</div>

JSFIDDLE

答案 2 :(得分:0)

可以使用Angular字符串操作完成。 This fiddle显示了一个有效的解决方案。

诀窍是使用{someProp: '!' + someVariable}

ng:repeat="o in list | filter: {id : '!' + myPrecious.id}"

我还没有为Angular过滤器语法找到合适的参考。