Angularjs承诺这个引用窗口

时间:2015-05-12 08:18:12

标签: javascript angularjs promise

我已经制作了一个带有加载功能的basemodel,定义如下:

    BaseModel.prototype.load = function(id) {
                    var deferred = $q.defer();

                    var self = this;
                    Db.getById(this.getTableName(), id).then(function(data) {
                        deferred.resolve(new BaseModel(data));
//self has a reference to window here
                    }, function(err) {
                        deferred.reject(null);
                    });

                return deferred.promise;
            };

在我的子类中,派生自这个基本模型我用它来调用它:

return BaseModel.prototype.load.call(this, id);

但是,在成功'承诺的一部分' var' self有一个对窗口的引用...是否可以保持对我的对象的引用,如果是这样,如何?我无法找到一个例子。

提前致谢!

1 个答案:

答案 0 :(得分:1)

return BaseModel.prototype.load.call(this, id);< - 这行就是您的问题。我不确定你在那里做什么,但从我所看到的,你使用this设置 call值,这可能是在代码点,指向Window对象。

如果BaseModel的孩子对象是childObj。那条线可以简单地说是:

return childObj.load(id);