我有一个对象数组,我在一个ng-repeat循环中使用,其属性通过它的id引用另一个对象。
{Description: 'something', OtherObjectId: 1}...
我使用指令在ng-repeat循环中显示有关OtherObject的信息。
<li ng-repeat="object in objects">
<div>{{object.Description}}</div>
<div other-object-info="date" other-object-id="{{object.OtherObjectId}}"></div>
</li>
otherObjectInfo指令使用innerHtml将请求的信息放入该html标记
现在这部分显然不起作用,我需要能够使用所有显示的信息过滤该列表,包括指令插入的信息。
你会如何解决?我想最好的方法是在渲染视图之前在对象数组中包含OtherObject,但我喜欢使用该指令的简单方法,因为我需要在多个视图中使用它。
非常感谢你的输出!
答案 0 :(得分:1)
考虑ng-repeat的自定义过滤器。您可以将其他对象与数组分开,并将您需要的任何内容传递给自定义过滤器函数:
<li ng-repeat="object in objects | filter:customFunct(otherObjectCollection)">
$scope.customFunct = function(otherCollection) {
return function(object) {
// locate the target object within otherCollection using object.OtherObjectId
// eg you can use this if you're using lodash:
var targetObj = _.find(otherCollection, {id : object.OtherObjectId});
// make the comparison you need
// use 'return' to return true based on the comparison
return targetObj.value > 40;
}
}
通过这种方式,您可以定义和使用带有传递参数的自定义过滤器。
您可以在此处阅读有关此解决方案的更多讨论: