Angular JS过滤器参数

时间:2016-02-15 12:47:04

标签: angularjs

使用自定义过滤器时遇到一些困难。我搜索过但搜索过但找不到任何相关内容,但对于有经验的人来说,这应该是一个快速解决方案。

我使用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

1 个答案:

答案 0 :(得分:1)

在HTML中删除第一个参数。

<li ng-repeat="post in vm.posts | watchedFilter:vm.user.postsWatched | limitTo:3" class="media">

当AngularJS框架调用过滤器函数时,它会设置被管道数据的第一个参数。后续参数是根据HTML中的参数设置的。