同一指令的多个角度实例,作用域不是孤立的
Angular multiple instances of same directive, scope is not isolated
在创建具有独立作用域的多个指令时遇到问题:当我更改第一个指令中的某些内容时,它也会更改所有其他指令。
以下是一个工作示例:http://plnkr.co/edit/drBghqHHx2qz20fT91mi?p=preview(尝试添加更多类型1的"可用通知"-第一个的更改将反映在类型1的所有其他指令中)
我在这里找到了一些类似问题的解决方案,但对我来说不起作用。还在指令(app.js,第76行)中找到了一个将"订阅"数据映射到本地范围变量的有效解决方案,但我认为应该有一种更通用的方法来做到这一点,对吗?
在指令"notificationitem"中,您有以下代码,请在我解释时记住:
// if all variables are mapped in this way than works
//$scope.enabled = $scope.subscription.enabled;
所有"隔离"作用域都在更新的原因是同一指令(notificationitem)中作用域声明中的以下代码:
scope: {
subscription: '=',
index: '@'
},
订阅上的等号是angular的说法:"每当当前作用域更新时,转到父作用域并更新该值。"这意味着每当更新"孤立"作用域时,它也会更新父作用域由于所有这些隔离的作用域都绑定到父作用域,因此它们也会发生更改
由于您希望subscription.value是该文本字段的默认值,因此您需要执行注释代码正在执行的操作:
scope.value = scope.subscription.value;
这将在隔离作用域内创建一个隔离值当scope.value更改时,scope.subscription.value将不会更改。所有的文本字段现在都有自己的"值"来跟踪。
有关指令绑定的信息,请查看本文:http://www.ng-newsletter.com/posts/directives.html
此外,如果您不喜欢上面的解决方案,另一种获得默认值的方法是将您的服务注入指令中。希望这一切都能有所帮助。
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- AngularJS指令隔离作用域
- Angularjs:修改js中的作用域,稍后在页面中使用
- 同一指令的多个角度实例,作用域不是孤立的
- 如何创建作用域的动态、基于实例的对象文字
- 作用域变量正在创建引用而不是新实例
- 在dojo的addOnLoad方法中创建实例没有全局作用域
- 将parent's作用域传递给子实例
- 作用域问题:Angular指令的多个实例具有隔离作用域
- 可以共享作用域和访问实例的私有原型方法
- 同一指令的多个角度实例,作用域不是孤立的,作用域相同