2016-06-21 10 views
1

私のコードは、このHTMLスニペットました:ng-changeを正確にトリガするものは何ですか?

<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がに設定されていることを確認する2

これは予想される動作ですか?もしそうなら、サーバーからデータを取得するときにng-changeが値を2に設定しないようにする方法がありますか?私が望むのは、ユーザー入力をしているときに値を2に変更するだけです。

答えて

0

これは、ng-changeイベントがwfの値を更新するとトリガーされるために発生していると思います。 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

関連する問題