刚刚在看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选择不同的过滤器。
理由は上に述べましたが、
$watch
が何なのかを理解するための文書をここに示します。リーリー
パスの変更はここで監視されます。パスが変更されると、フィルターのパラメーターも変更されます。実際には、完了したデータとアクティブなデータの切り替えです