Javascript 如何在AngularJS中使用方法作为过滤器?
我有一个自定义数据类型Javascript 如何在AngularJS中使用方法作为过滤器?,javascript,angularjs,Javascript,Angularjs,我有一个自定义数据类型消息: 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
消息
:
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>
filter
要求存在一个表达式,该表达式的计算结果为作用域上的谓词。这是一个函数,它接受一个元素作为其参数,并返回该元素是否应包含在集合中
在控制器中:
$scope.hasStars = function (message) {
return message.hasStars();
};
在你看来:
<li ng-repeat='message in messages | filter:hasStars | orderBy:"-stars.length"'>...</li>
filter
要求存在一个表达式,该表达式的计算结果为作用域上的谓词。这是一个函数,它接受一个元素作为其参数,并返回该元素是否应包含在集合中
在控制器中:
$scope.hasStars = function (message) {
return message.hasStars();
};
在你看来:
<li ng-repeat='message in messages | filter:hasStars | orderBy:"-stars.length"'>...</li>
我假设某个名为mySrv的服务将消息加载到您的控制器中
myapp.controller('myCtrlr',['$scope','mySrv',function($scope,mySrv){
$scope.messages = mySrv.getMessages();
}]); // end myCtrlr
myapp.filter('hasStars',function(){
return function(msg){
return msg.stars.length > 0;
};
});
在模板中
<ul ng-controller="myCtrlr">
<li ng-repeat="message in messages | hasStars | orderBy:"-stars.length">...</li>
</ul>
我假设某个名为mySrv的服务将消息加载到您的控制器中
myapp.controller('myCtrlr',['$scope','mySrv',function($scope,mySrv){
$scope.messages = mySrv.getMessages();
}]); // end myCtrlr
myapp.filter('hasStars',function(){
return function(msg){
return msg.stars.length > 0;
};
});
在模板中
<ul ng-controller="myCtrlr">
<li ng-repeat="message in messages | hasStars | orderBy:"-stars.length">...</li>
</ul>
你需要一个自定义的过滤器that@sza事实并非如此。请参阅“像贾里德这样的词”的答案。@jessegavin,这只是一个过滤器。您可以使用
filter
模块创建筛选器,也可以只创建一个函数。它是一个谓词函数,但未通过依赖关系注入器在angular中注册为“筛选器”。您需要为其创建自定义筛选器that@sza事实并非如此。请参阅“像贾里德这样的词”的答案。@jessegavin,这只是一个过滤器。您可以使用filter
模块创建筛选器,也可以只创建一个函数。它是一个谓词函数,但未通过依赖项注入器在angular中注册为“筛选器”。您的意思是不将消息放在$scope上吗?您的意思是不将消息放在$scope上吗?