我有一个工厂NewEditSvc
,我正在尝试分享NewCtrl
和EditCtrl
的共同功能。我要做的一件事是从服务内部的服务器获取feeParameters
,但这不起作用。
angular.module('feeSuitesApp')
.factory('NewEditSvc', function($q, FeeTypesSvc){
var _feeParameters = {};
function getParameters(){
return _feeParameters;
}
function setParameters(feeType){
var promise = $q(function(resolve, reject){
FeeTypesSvc.resource.get({id: feeType.id, association: 'fee_parameters'}).
$promise.then(function(data){
resolve(data);
}, function(error){
reject(error);
})
});
promise.then(function(data){
_feeParameters = data.master;
});
}
return {
getParameters: getParameters,
setParameters: setParameters
}
});
angular.module('feeSuitesApp')
.controller('NewCtrl', function(NewEditSvc, feeType){
$scope.feeParameters = NewEditSvc.getParameters();
$scope.feeType = feeType;
$scope.setParameters = function(feeType){
NewEditSvc.setParameters(feeType);
};
$scope.setParameters($scope.feeType);
});
在我的最后一行$scope.feeParameters
未设置之后。但是,如果我从NewEditSvc.setParameters()返回promise
变量,然后在我的NewCtrl
中,我会执行以下操作:
var promise = $scope.setParameters($scope.feeType);
promise.then(function(data){
$scope.feeParameters = data.master;
});
然后一切正常。我做错了什么?
答案 0 :(得分:2)
问题是,你没有在setParameters中返回你的诺言。 https://docs.angularjs.org/api/ng/service/ $ Q /
只需添加return promise
。