2016-06-21 49 views
1

我的代碼有這個HTML片段:究竟是什麼觸發ng變化?

<div ng-repeat="wf in wos.word.wordForms"> 
    {{ wf.statusId }} 
    <textarea ng-change="wf.statusId = 2" 
       ng-model="wf.definition"> 
    </textarea> 
    ... 
    ... 

當我改變的東西在wf.statusId變爲2如預期

現在我發出了一個保存文本區域。它將當前的wf內容發送到服務器。當我從服務器取回數據時,我將它複製回wf。

的數據被正確填充,但即使服務器返回的3 statusId我仍然可以看到表示HTML 2.

(response: ng.IHttpPromiseCallbackArg<IWordForm>): any => { 
    wf = angular.copy(response.data); 
}, 

response.data.statusId = 3

當我看我看到的頁面statusId設置爲

這是預期的行爲?如果是的話,有什麼辦法可以讓我這樣做,以便當我從服務器獲取數據時,ng-change不會將值設置爲2?我所需要的是當我進行用戶輸入時,將其值更改爲2。

回答

0

我認爲這是因爲當您更新wf的值時觸發ng-change事件。如何在wf = angular.copy(response.data);之後添加超時然後將wf.statusId更改爲2?

的代碼將是:

(response: ng.IHttpPromiseCallbackArg<IWordForm>): any => { 
    wf = angular.copy(response.data); 
    $timeout(function() { 
     wf.statusId = 2; 
    }, 1); 
}, 

嘗試,讓我知道,如果它的工作原理,我不知道在所有的,但它可能工作。

如果你不知道$超時如何工作,看看$timeout Documentation

+0

使用值依然未正確設置超時後。 –

+0

我不明白你爲什麼需要這個狀態。而且,你爲什麼要複製從服務器返回的值?它與發送的不同嗎? – miquelarranz