如何在AngularJS中使用方法作为过滤器
How to use method as filter in AngularJS?
我有一个自定义数据类型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>
我假设有一个名为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>
相关文章:
- 使用方法将扫描的项目添加到总数中
- D3使用方法链接时的不同行为
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- JQuery AJAX - 如何使用方法 GET 调用刷新/重新加载页面
- 在Javascript中使用C#方法
- 可以'使用方法帖子时,不要提交ajaxForm
- AngularJS过滤器使用ng个重复复选框显示所有页面加载
- 为什么不能在带有条件的ng类中使用方法
- http模块(node.js和browserfy的)没有't使用方法PATCH写入请求正文
- PHP-AJAX复选框过滤器使用数据标记属性
- 在 javascript 中使用方法的局部变量
- 使用方法和属性定义javascript对象的最佳方法是什么?(如果可能以本机方式)
- 无法使用方法调用 meteor 包中的函数
- 405:不允许使用方法(AJAX 查询到 Flask)
- 使用方法=发布通过jquery提交表单
- Extjs 网格过滤器使用 store.filter
- 仅使用方法名称的字符串调用对象的方法
- 在 javascript 对象中使用方法的值以在 setTimeout 函数中使用
- 如何在AngularJS中使用方法作为过滤器
- 如何在SAILJS的API REST中使用方法过滤器搜索