2013-12-16 96 views
0

我試圖讓兩個multiselect小部件保持同步,但我只能夠獲得單向行爲。將Angular自定義僞指令綁定到模型的問題

一個窗口小部件位於主頁面上,另一個窗口位於角度ui-bootstrap模式中。這兩個多選控件都是使用自定義指令創建的。指令的每個實例都綁定到不同的控制器(MainCtrl和ModalCtrl)。指令的每個實例的「selected」屬性都綁定到各自控制器中的作用域變量,而該變量又綁定到模型(getSelectedFilters)中的同一個getter方法。

如果我在主頁面上更改小部件上的選擇,則更改將反映在模式面板中的小部件中。但是,如果我更改模式面板中的選擇,即使模型已正確更新,主要頁面上的小部件中也不會反映更改(按鈕「顯示當前選定」將顯示正確的選擇,即使小部件沒有)。我根本不瞭解差異。

這是一個簡潔的說明我的問題的plnkr。

http://plnkr.co/edit/nC5bkGFE4LkYZsaxdjL7?p=preview

我完全新角度,並希望任何輸入,爲什麼我的主頁上的指令沒有被正確更新時,模型中的更改數據。

+0

當我嘗試你的運動員時,更新似乎在兩個方向上都起作用。我不能直接在主頁面上添加,但刪除主頁面上的元素會反映在模式上,添加模式會反映在主頁面上。 –

+0

是的,我的壞。我發佈我的問題後,我讓一個朋友玩它。他糾正了我的問題。這是我第一次使用plnkr而不是jfiddle。很高興知道更新會自動顯示,而不會像jfiddle那樣更改鏈接!我會很快發佈答案。 – Emilie

+0

(版本7是我最初發布的) – Emilie

回答

0

版本7的plnkr是我最初發布的。

基本上,只要價值被改變,在$ scope.selected上調用$ apply就不足以通知其他改變指令。我也不得不設置一個$表:

$scope.$watch('selected', function(newVal, oldVal) { 
    select2.val(newVal).select2(options); 
}); 

我現在是,爲什麼在模式的選擇2指令正在更新都沒有$手錶,當我修改主頁上選擇2指令完全不清楚。如果有人能解釋那裏發生了什麼,我會愛上它!對於任何人可能知道,回到第7版,看看我的意思。