angular.forEach是否创建了它自己的范围?

时间:2016-06-21 15:10:31

标签: angularjs

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

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

在服务中我有这个:

wordFormCheckAndUpdate = (): ng.IPromise<any> => {
    var self = this;
    var promises = [];
    angular.forEach(self.word.wordForms, function (wf, key) {
        if (wf.statusId == Status.Dirty) {
            if (wf.createdDate) {
                var updatePromise = self.wordFormUpdateSubmit(wf);
                promises.push(updatePromise);
            } else {
                var addPromise = self.wordFormAddSubmit(wf);
                promises.push(addPromise);
            }
        }          
    });
    return self.$q.all(promises);
};

wordFormAddSubmit和wordFormUpdateSubmit修改wf中的数据:

wf = angular.copy(response.data);
wf.statusId = 3;
wf.abc = "test"

当调用其中一个函数时,它似乎不会改变textarea上面显示的内容,而statusId仍显示为2和&#34; test&#34;没有出现。有没有人有任何想法可能会发生什么?

更新。以下是两个被调用的函数:

wordFormAddSubmit = (wf: IWordForm): ng.IPromise<any> => {
    var self = this;
    return self.$http({
        url: self.ac.dataServer + "/api/WordForm/Post",
        method: "POST",
        data: wf
    })
        .then(
        (response: ng.IHttpPromiseCallbackArg<IWordForm>): any => {
            wf = angular.copy(response.data);
            self.$timeout(function () {
                wf.statusId = 3;
                wf.sourceId = 999;
            }, 3);


        },
        (error: ng.IHttpPromiseCallbackArg<any>): any => {
            self.ers.error(error);
            return self.$q.reject(error);
        });
}

wordFormUpdateSubmit = (wf: IWordForm): ng.IPromise<any> => {
    var self = this;
    return self.$http({
        url: self.ac.dataServer + "/api/WordForm/Put",
        method: "PUT",
        data: wf
    })
        .then(
        (response: ng.IHttpPromiseCallbackArg<IWordForm>): any => {
            wf = angular.copy(response.data);
            //$timeout(function () {
                wf.statusId = 3;
            //}, 1);
                var a = wf;
                var b = wf;

        },
        (error: ng.IHttpPromiseCallbackArg<any>): any => {
            self.ers.error(error);
            return self.$q.reject(error);
        });
}

0 个答案:

没有答案