Angularjs 无法使用angular promise访问javascript本地函数
在上面的代码中,我无法访问populateData方法from then函数 在函数的作用域中,我得到self=this的对象是我在应用程序中已经创建的其他对象 我认为范围有问题。如果这不是我的承诺,那么我将使用以下代码Angularjs 无法使用angular promise访问javascript本地函数,angularjs,Angularjs,在上面的代码中,我无法访问populateData方法from then函数 在函数的作用域中,我得到self=this的对象是我在应用程序中已经创建的其他对象 我认为范围有问题。如果这不是我的承诺,那么我将使用以下代码 (function () { 'use strict'; angular .module('residentialApp') .factory('LockerBank', ['$q', 'lockerbankService', 'notificationSer
(function () {
'use strict';
angular
.module('residentialApp')
.factory('LockerBank', ['$q', 'lockerbankService', 'notificationService', 'rfc4122', 'LanguageResourceService', 'StringFormat'
, function ($q, lockerbankService, notificationService, rfc4122, LanguageResourceService, StringFormat) {
var lockerBank = function (lockerBankId, lockerName) {
if (lockerName === undefined) {
lockerName = "";
}
self=this;
if (lockerBankId === undefined) {
lockerBankId = "";
}
this.name = lockerName;
this.id = lockerBankId;
this.description = "";
this.isActive = "";
this.relayEndPointName = "";
this.lockerBankCode = "";
this.createdUtcDate = "";
this.lastHeartBeatUtcDate = "";
this.propertyId = "";
this.mailRoomId = "";
this.address = "";
this.apiToken = "";
this.status = "";
this.lastHeatBeatDateDisplay = "";
this.lastUpdateInSecond = "";
this.createdOnDateDisplay = "";
this.organisationId = "";
return this;
};
lockerBank.prototype = {
initialize: function () {
},
loadFromServer: function (propertyId) {
var defer = $q.defer();
if (this.id === undefined || this.id == null) {
defer.resolve(null);
}
else {
lockerbankService
.loadLockerBank(this.id)
.then(function success(data) {
// The problem is here
self.populateData(data);
var newObject = angular.copy(this);
defer.resolve(newObject);
}, function failure(response) {
defer.reject(response);
});
}
return defer.promise;
},
populateData: function (apiData) {
if (apiData === undefined || apiData == null) {
return;
}
if (this.id === undefined || this.id == null) {
this.id = apiData.Id;
}
}
};
return lockerBank;
}]);
})();
有谁能帮我解决这个范围问题吗?我不知道您在
loadFromServer
函数中声明了self
。试试这个:
lockerbankService.loadLockerBank(this.id)
.then(function success(data) {
self.populateData(data);
var newObject = angular.copy(this);
defer.resolve(newObject);
}.bind(this))
谢谢我在构造函数中添加了self=this。这是一个简单的解决办法,我不知道我怎么会忽视这一点。谢谢
loadFromServer: function (propertyId) {
var self = this;
var defer = $q.defer();
....