【发布时间】:2013-03-19 23:14:40
【问题描述】:
我正在使用 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 范围访问不切实际,但我找不到更优雅的方式。
非常感谢任何提示!
【问题讨论】:
-
如果您在父范围内使用对象,则不必使用
$parent。即,如果在父作用域中定义了$scope.search = { ... },则子作用域(但不是指令隔离作用域)可以通过normal JavaScript prototypal inheritance 访问该对象。 -
$route.current.name也许?? -
在优惠路线上,我有一个数据表,例如 tr(ng-repeat="o in offer | filter:search") td {{offer.title}} 等。我无法到达它来自 ng-model='search.title' 的布局
-
这应该可以。我只能猜测您在某处之间有一个隔离范围。
-
这 2 个作用域只有 $rootScope 作为共同祖先,它们的父作用域都是根作用域的子作用域
标签: angularjs ng-repeat ng-switch