我有一個表單在指令中。它包含2個選擇下拉菜單(jQuery風格)和一個jQuery UI滑塊,因此它始終是主題。jQuery UI中的更改沒有反映在角度模型上
下拉列表1在生成時填充,就像它們來的那麼簡單。 當Dropdown 1的值發生變化時,下拉2會被填充。發生這種情況是因爲下拉列表1已附加ng-change="refreshModels()"
。這像一個魅力。
但是,滑塊更成問題。 爲了獲得滑塊的值,我需要一個隱藏的輸入字段,在滑塊位置的每次更改中都會使用$ .val()填充。該值正確更新,甚至更改事件觸發(當我將onchange="console.log('I changed')"
放到隱藏字段上時,我將所有內容都記錄得很好)。
但是,附加到該相同隱藏字段的ng模型從不更新。不像onchange那樣,Ng-change從不觸發。
所以我asked around,並試圖在jQuery的滑塊的滑動處理這樣做:
angular.element($(this)).scope().$apply();
但沒有骰子。什麼都沒發生。試圖打電話給我所知道的模型,就像我知道的那樣:
angular.element($(this)).scope().model_that_definitely_exists;
產量未定義。嘗試訪問指令父控制器中的模型也會產生未定義的問題。
爲什麼使用直接用戶在字段中輸入以外的方式進行Angular寄存器更改如此困難?我究竟做錯了什麼?
P.S.我試着把ng-mouseup放到成爲滑塊的元素上,並且調用了刷新方法 - 但是直接調用隱藏的字段。對於Angular來說,這些仍然是未定義的,即使在現實中,它們也有價值 - 滑塊將它們放在那裏。
P.P.S.我也嘗試將$ watch放到我希望在移動滑塊後改變的模型上,沒有任何東西。模型的值永遠不會改變,即使字段的val實際上也是如此。
P.P.P.S.我剛剛發現這種令人傷心的事態。 https://github.com/angular-ui/angular-ui/issues/252如果任何人有解決方法,我會非常感激。
[使用jQuery設置輸入值後更新角度模型]的可能重複(http://stackoverflow.com/questions/17109850/update-angular-model-after-setting-input-value-with-jquery) – Stewie
Don '不知道這個JSBin是否有幫助:http://jsbin.com/azasus/1/edit – imaginaryboy