2013-04-26 35 views
0

我正在創建一個使用this timezone picker jQuery plugin的指令,以便我們的應用程序中有一個時區選擇器「小部件」。我遇到的問題是,當你選擇一個時區時,它只會改變select元素的值。所以,這個元素有正確的價值,但我的模型沒有。我想我只需要在那裏扔一個scope.$apply(),但過了一段時間,我意識到這是爲了更新角度以外改變的模型的視圖。我的問題恰恰相反。如何從角度更改我的視圖更新我的模型?下面是說明該問題的簡單小提琴:http://jsfiddle.net/tWzwA/如何將選擇的外部更改值轉換爲角度模型

我想了ngModelController可以幫助我在這裏,但我不知道我會得到它的訪問,以及究竟我會用它做什麼。有人可以請指點我正確的方向嗎?謝謝。

+0

你應該將jQuery插件包裝在一個指令中,而不是從angularJS controllers/services/nothing-but-directives訪問DOM,你真的失去了angularJS設計的好處if你走那條路。 – Guillaume86 2013-04-26 16:10:35

+0

我不確定我明白你在說什麼。我將這個插件封裝在一個指令中。該插件更新我的HTML元素。當插件更新select元素時,我如何將這個值放入Angular世界? – dnc253 2013-04-26 19:18:43

+0

你的指令應該監聽插件事件並更新角度範圍或相應地發出範圍事件 – Guillaume86 2013-04-26 19:47:32

回答

0

你應該定義控制器上的更新功能:

$scope.updateDropDownDirectly = function(value){ 
     $scope.myModel = value; 
    }; 

然後改變事件從的onclick到NG-點擊,讓角度進行管理:

<button ng-click="updateDropDownDirectly(1)">1</button> 

this jsFiddle

+0

如果這是我的代碼,那就是我要做的。小提琴本意是爲了說明插件的作用 - 我無法控制的代碼。 – dnc253 2013-04-26 19:13:58