【问题标题】:ng-switch element in layout issue布局问题中的 ng-switch 元素
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    相关资源
    最近更新 更多