2013-06-01 114 views
1

我的工作與AngularJS在那裏我有一個問題,2米範圍衝突的一個項目發生衝突: - 我定義我的DOM的不同的地方(它的偉大工程) 範圍控制器 - 我只是添加了3個指令來實現一個「幫助」工具提示功能,就像jQuery中的chardin.js插件(http://heelhook.github.io/chardin.js/):一個主要指令能夠一次觸發全部,一個觸發按鈕上的「子」指令,以及一個'child'指令用於標記每個我想要工具提示的DOM元素。AngularJS:指令範圍與控制器範圍

當我只有這3個指令時,它的效果很好,但是當我同時實現我的控制器和指令時,我不能再使用我的控制器了(範圍似乎完全錯誤......)

我具有的結構是這樣的:

  • HTML - >主控制器
  • 4個部分 - > 4個控制器

和予加在主體上有1條指令,1條指令指向某個按鈕,1條指令指向4個部分的各個元素...

我知道我的解釋很混亂,但我真的做了我的最適合我的第一條消息!

如果你想看到我爲我的指令編寫的代碼,那就是:http://plnkr.co/edit/GrwgkH?p=preview

非常感謝您的幫助

S.

回答

1

嘗試包裝控制器的範圍模型在某些對象中。原始值(例如,數字,字符串,布爾值)通過屬性具有相同的名稱而隱藏在子範圍中。

閱讀更多關於AngularJS github wiki上的Understanding Scopes

+0

我已閱讀了有角網站上的所有文檔,並且我查看了github上的代碼,但我沒有想過維基!感謝您的想法! –

+0

目前,我有2個解決方案:忘記指令,並使用一個服務,其中我使用angular.element.find與屬性測試重建jquery插件沒有jQuery(它完美的作品,但我不喜歡測試所有的DOM元素,以檢查它們的屬性..) 我有第二個想法是使用指令來填充元件的陣列,位於服務,然後使用該服務到陣列映射,從而消除所述第一測試所有的DOM元素去尋找那些與我的屬性... –

+0

不幸的是,我的第二個選擇是不工作的,因爲我有這樣的問題:我的指令可以無處不在DOM,並可以有嵌套元素(在HTML的其餘部分) 。 但這些嵌套元素不能訪問我的指令上面定義的初始控制器! –

1

我最終也遇到了Primitive值的問題。我最終使用sugar.js和Object.extended()創建了一個$ scope.context對象,用於存儲我的模型數據。這也允許輕鬆緩存數據。

+0

感謝您的提示,我會看看sugar.js –