我已经制作了一个带有加载功能的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有一个对窗口的引用...是否可以保持对我的对象的引用,如果是这样,如何?我无法找到一个例子。
提前致谢!
答案 0 :(得分:1)
return BaseModel.prototype.load.call(this, id);
< - 这行就是您的问题。我不确定你在那里做什么,但从我所看到的,你使用this
设置 call
值,这可能是在代码点,指向Window
对象。
如果BaseModel
的孩子对象是childObj
。那条线可以简单地说是:
return childObj.load(id);