我的代码有这个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。
答案 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