角度与不同视图中的过滤器

时间:2013-12-05 08:04:27

标签: angularjs angular-ui-router

我有一个关于Angular和Angular-UI路由器的问题。我想在一个bootstrap导航栏中放置一个过滤器,它可以根据当前路径而变化。我试图用Angular-UI路由器实现这种行为,但是ui-router不支持跨多个视图共享同一个控制器。在他们的文档中触及了这个主题。请参阅:https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views

我创建了一个具有所需行为的plunker:http://plnkr.co/edit/W0UgeW

在我的问题上:有什么方法可以实现这种行为吗?我不喜欢用Angular-ui路由器做这件事,如果不使用扩展就可以了,我宁愿这样做。

谢谢,

巴特

1 个答案:

答案 0 :(得分:1)

您可以创建自定义过滤器,如:

 myapp.filter('myfilter', function() {
   return function( items, combo) {
    var filtered = [];
     console.log(items, combo);
    angular.forEach(items, function(item) {
       if(item.name == combo){
         filtered.push(item);
       }

    });

    return filtered;
  };
});

现在通过combo选项查看我们可以写:

 $rootScope.theFilter = '';

我们的表格如下:

<table id="searchTextResults">
  <tr><th>Name</th><th>Phone</th></tr>
  <tr ng-repeat="friend in friends | myfilter:theFilter">
    <td>{{friend.name}}</td>
    <td>{{friend.phone}}</td>
  </tr>
</table>

参见演示 Plunker