究竟是什么引发了变革?

时间:2016-06-21 13:49:53

标签: angularjs

我的代码有这个HTML代码段:

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

当我在textarea中更改某些内容时,wf.statusId按预期变为2

现在我发出保存。它将当前的wf内容发送到服务器。当我从服务器获取数据时,我将其复制回wf。

数据填充正确,但即使服务器返回statusId为3,我仍然看到HTML显示为2.

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

response.data.statusId = 3

当我查看页面时,我看到statusId设置为 2

这是预期的行为吗?如果是这样,我可以做任何方式,以便当我从服务器获取数据时,ng-change不会将值设置为2?我想要的是它在我进行用户输入时将值更改为2。

1 个答案:

答案 0 :(得分: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的工作原理,请查看$timeout Documentation