2016-06-12 50 views
4

我有一個文本輸入綁定到模型值,但我無法弄清楚如何以編程方式更改輸入值並將更改傳播到模型。以編程方式更改輸入時,角度模型不會更新

據我所知,因爲我正在更新角度範圍外部的值,我需要明確地調用$scope.$apply(),但它不起作用。

HTML:

<input id="test_input" ng-model="test_value"> 

控制器:

$scope.test_value = 'abc'; // starting value 

控制檯:

$('#test_input').val('xyz'); 
$('#test_input').scope().$apply(); 
$('#test_input').scope().test_value; 
-> 'abc'; 
+0

你爲什麼不改變$ a的值scope.test_value直接使用控制檯,而這樣做使用jQuery? –

+0

@RahulArora - 這是演示代碼。我有一個應用程序,其中輸入元素正在以編程方式更新,我希望模型註冊該元素。 – Yarin

+0

檢查我的答案@Yarin –

回答

5

ngModel偵聽「在放」事件,所以你需要設定值後觸發事件:

$('#test_input').val('xyz'); 
$('#test_input').trigger('input'); 
$('#test_input').scope().test_value; 
+0

注意:使用'trigger'時不需要'apply()'調用,並且必須在Angular之前包含jQuery才能使用它:https://jsfiddle.net/xj9rysy6/ –

+0

如果我在「輸入」事件中工作,該怎麼辦?不會再次觸發輸入導致無限循環? – Sebastianb

+0

然後你不需要觸發它,你只需要調用scope()來消化它 –

相關問題