0

我正在使用 ng-switch 在布局中创建过滤输入字段。我正在打开路由名称,并使用此字段过滤每页上 ng-repeat 中的数据。

div(ng-controller="NavbarCtrl", ng-switch on="route.current.name")
                input.filter(ng-switch-when='offers',type="text", ng-model="$parent.$parent.search.title")
                input.filter(ng-switch-when='merchants',type="text", ng-model="$parent.$parent.search.name")

这种方法的问题在于,我在一个页面上输入的值在导航到另一条路线并过滤另一页上的数据时会保持保存。我正在使用内置的角度搜索过滤器,因此使用了模型名称。

我可以在路由更改时以某种方式重置过滤器的值吗?

另一个问题是我发现这个 $parent.$parent 范围访问不切实际,但我找不到更优雅的方式。

非常感谢任何提示!

4

1 回答 1

0

正如评论中所讨论的,混淆是围绕search属性,它不是 Angular 中的特殊过滤器,而只是将与 Angular 的过滤器过滤器一起使用的属性的名称。

此外,$parent如果使用/引用了父范围对象上的属性,则不需要。即,如果$scope.search = { ... }在父作用域中定义,则子作用域(但不是指令隔离作用域)可以通过正常的 JavaScript 原型继承访问该对象。

于 2013-03-19T15:14:40.957 回答