2015-05-12 21 views
2

我做了一個負載功能的basemodel,定義如下:Angularjs承諾此引用窗口

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; 
      }; 

在我的孩子類,從這個basemodel IM派生與調用它:

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

但在承諾的'成功'部分,'var'自我有一個對窗口的引用......是否可以保留對我的對象的引用,如果可以,怎麼辦?我找不到這樣的例子。

在此先感謝!

回答

1

return BaseModel.prototype.load.call(this, id); < - 此行是您的問題。我不完全確定你在那裏做什麼,但從我所看到的,你設置this值使用call,這可能在該代碼點,指向Window對象。

如果您的子女對象BaseModelchildObj。該行可以簡單地爲:

return childObj.load(id);