我使用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作用域访问不切实际,但我找不到一个更优雅的方式。
任何提示非常感谢!
正如评论中讨论的那样,混淆是围绕着search
属性,它不是Angular中的一个特殊过滤器,而只是一个将与Angular的过滤器过滤器一起使用的属性名。
同样,如果使用/引用父作用域对象上的属性,则不需要$parent
。也就是说,如果$scope.search = { ... }
在父作用域中定义,子作用域(但不是指令隔离作用域)可以通过正常的JavaScript原型继承访问该对象。