我有一个自定义数据类型Message
:
function Message(body, author, date) {
this.body = body;
this.author = author;
this.date = date;
this.stars = [];
}
Message.prototype.hasStars = function() {
return this.stars.length !== 0;
};
我也在这些消息的数组上重复:
<li ng-repeat='message in messages | orderBy:"-stars.length"'>…</li>
如何向调用
message.hasStars()
的过滤器添加过滤器?我尝试了以下方法,但没有一个起作用:message in messages | filter:message.hasStars() | orderBy:"-stars.length"
message in messages | filter:message:hasStars() | orderBy:"-stars.length"
message in messages | filter:message.hasStars | orderBy:"-stars.length"
message in messages | filter:message:hasStars | orderBy:"-stars.length"
最佳答案
http://jsfiddle.net/DGKNN/filter
期望存在一个表达式,该表达式的值取决于范围的谓词。该函数接受一个元素作为其参数,并返回该元素是否应包含在集合中。
在您的控制器中:
$scope.hasStars = function (message) {
return message.hasStars();
};
您认为:
<li ng-repeat='message in messages | filter:hasStars | orderBy:"-stars.length"'>...</li>