关于angularjs中自定义filter的问题

刚刚在看angularjs的todoMVC项目,发现它在控制器中自定义了一个过滤器

$scope.$watch('TC.location.path()',function (path) {
            TC.Filters = {'/active':{completed: false},'/completed':{completed:true}}[path];
        });

之后在视图中

<li ng-repeat="todo in TC.todos | filter:TC.Filters track by $index" ng-class="{completed: todo.completed, editing: todo === TC.editedTodo}">

我的问题主要是第一段代码这种写法不了解

function (path) {
            TC.Filters = {'/active':{completed: false},'/completed':{completed:true}}[path];
        }

这个方法中传入path后根据path选择不同的过滤器。

我想问问有没有文档是介绍这种在过滤器对象内选择的写法的。

阅读 4.1k
2 个回答

虽然楼上已经给出了原因,但是估计你也不太明白,给你个文档,看看什么是$watch吧,文档在这里。

$scope.$watch('TC.location.path()',function (path) {
    TC.Filters = {'/active':{completed: false},'/completed':{completed:true}}[path];
});

这里监听了路径的变化,当路径变化了filter的参数也随之变化了。实际上就是completed和active数据的切换

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进