使用自定义过滤器时遇到一些困难。我搜索过但搜索过但找不到任何相关内容,但对于有经验的人来说,这应该是一个快速解决方案。
我使用ng-repeat填充列表,这是来自vm.posts。
登录并查看帖子的用户是vm.user,并且有一个变量vm.user.postsWatched,这是一个post id数组。
我创建了一个自定义过滤器,以检查帖子是否有“观看”状态。 id如果是,则显示它。
在我的过滤器中,我打印了两个变量的内容,发现我并没有得到我想要发送的内容。
的index.html:
<ul class="media-list">
{{vm.user.postsWatched}}
<li ng-repeat="post in vm.posts | watchedFilter:vm.posts:vm.user.postsWatched | limitTo:3" class="media">
<div class="media-body">
<h4 class="media-heading">{{post.title}}</h4>
<p>{{post.date | date: 'short'}} | {{post.content}}</p>
</div>
</li>
</ul>
在第二行,显示正确的post ID数组,所以我知道那里没有问题。
vm.posts和vm.user.postWatched作为参数传递给watchedFilter,到目前为止是否存在问题?
watchedPost.filter.js:
(function () {
'use strict';
angular
.module('app')
.filter('watchedFilter', function () {
return function(inputs,ids) {
console.log("ids:" + JSON.stringify(ids[0]) + JSON.stringify(ids[1]) + JSON.stringify(ids[2]));
console.log("Input:" + JSON.stringify(inputs[0]) + JSON.stringify(inputs[1]) + JSON.stringify(inputs[2]));
...
};
});})();
在我开始过滤之前,函数参数的内容&#39; ids&#39;不等于vm.user.postsWatched,而是包含与&#39;输入相同的信息&#39;。所以我可以告诉它获得一个参数正常,但似乎不是两个,如果有人能澄清它会真的帮助我。
如果需要更多,请问,非常感谢:D
答案 0 :(得分:1)
在HTML中删除第一个参数。
<li ng-repeat="post in vm.posts | watchedFilter:vm.user.postsWatched | limitTo:3" class="media">
当AngularJS框架调用过滤器函数时,它会设置被管道数据的第一个参数。后续参数是根据HTML中的参数设置的。