我有以下問題。我有一個search.js
控制器,它使用模板results.html
。該模板使用類別指令來顯示任何公司產品可能具有的所有類別(作爲邊欄)。它還使用多個產品輪播指令來顯示每個匹配公司的產品。Angularjs指令2方式綁定不工作+延遲問題
在我的search.js
控制器中,我定義了一個名爲filterCategoryId
的範圍變量,該變量從null開始。該變量綁定到類別指令以及所有產品輪播指令。這使我期望在任何指令和search.js
控制器中對此變量的更改都會使用此變量傳播給所有其他變量。該變量用於限制產品的顯示僅限於該類別的顯示。
但是在我的產品輪播指令中,我定義了一個範圍方法removeFilterCategory()
,它將filterCategoryId
設置回null。它在自己的範圍內工作。我可以看到效果。但它不影響類別指令上的filterCategoryId
。我可以告訴,因爲我使用ng-class將active
類設置爲提及產品被過濾到的類別標識的列表項。但更改filterCategoryId
類別指令確實傳播到產品輪播指令。 產品輪播指令前有一個ng-repeat ...
從本質上講,該變量首先在我的控制器的範圍內定義。如果我在類別指令中更改它,則更改會傳播(在顯着的時間之後)到產品輪播指令。但是,如果我從任何產品輪播物品中更改它,類別指令並不反映這些更改。我不明白爲什麼。 該產品輪播使用$表檢查filterCategoryId
並重新計算其行..
所有指令都使用一個孤立的範圍使用同一個變量filterCategoryId
並使用'='
的範圍值。
可能是什麼問題?
即使我在類別指令中更改了filterCategoryId
,也需要5-6秒才能反映產品輪播指令的更改。
我感覺我在這裏錯過了一些東西。要麼我有一個明顯的代碼錯誤,我似乎忽略了或者我錯過了一些角度理解:)。任何幫助正確的方向將不勝感激。
阿哈你的第二個建議似乎幫助了我很多。綁定原始值似乎是一個禁忌。當我使用一個對象時,變化無處不在。非常感謝! 明天我會查看延遲問題。這似乎仍然存在。我的感覺表明它與消化週期有關。 – toonevdb
經過一些測試後,我發現我的延遲問題是由bootstrap carousel js引起的。如果我使用純html而沒有附加js。 dom更新幾乎是即時完美的。但是,在應用轉盤時,更新dom會有一個非常明顯的延遲。但這是一個單獨的問題,我明天會研究它。 – toonevdb