AngularJS:指令范围与控制器范围冲突

时间:2013-06-01 12:59:53

标签: angularjs angularjs-directive angularjs-scope

我正在与AngularJS合作开展一个项目,我遇到了两个范围冲突的问题: - 我有控制器在我的DOM的不同位置定义范围(它很棒) - 我刚刚添加了3个指令来实现一个“help”工具提示函数,就像jQuery(http://heelhook.github.io/chardin.js/)中的chardin.js插件一样:一个主指令能够一次触发它们,一个'child'指令就是触发按钮,以及一个'child'指令,用于标记我想要工具提示的每个DOM元素。

当我只有那3个指令时,它工作得很好,但是当我同时实现我的控制器和我的指令时,我再也不能使用我的控制器了(范围似乎是完全错误的......)

我的结构是这样的:

  • html - >主控制器
  • 4个部分 - > 4个控制器

我在主体(主要的一个)上添加了1个指令,在某个地方添加了1个指令,并在4个部分的各个元素上添加了1个指令...

我知道我的解释很困​​惑,但我在这里的第一条消息真的做到了最好!

如果你想查看我为我的指令编写的代码,请点击:http://plnkr.co/edit/GrwgkH?p=preview

非常感谢你的帮助

S上。

2 个答案:

答案 0 :(得分:1)

尝试将控制器的范围模型包装在某个对象中。原始值(例如,数字,字符串,布尔值)通过其自己的具有相同名称的属性隐藏在子范围中。

在AngularJS github wiki上的Understanding Scopes中阅读更多内容。

答案 1 :(得分:1)

我最终也遇到了Primitive值的问题。我最终使用sugar.js和Object.extended()来创建我存储模型数据的$ scope.context对象。这样也可以轻松缓存数据。