我是AngularJs的新手,我创建了一个服务,并希望在特定控制器加载时调用该服务。
我用于控制器的代码是:
sampleApp.controller('ProjectAppController', function ($scope, ProjectAppService) {
ProjectBudgetService.save().then (
function () {
$location.url('');
},
function () {
$scope.error = true;
}
);
}
服务代码在这里:
sampleApp.factory('ProjectBudgetService', function ($http, $q) {
return {
save: function () {
var deferred = $q.defer();
$http.get('http://lh-cip.ultraserve.net.au/project/budget/?',
{ headers: { 'Authorization': $.session.get("loginToken") } }
)
.success(function (data) {
if(data.options=="") {
alert("No Budget Option.");
}
else {
$q.options.push.apply($q.options, data.options);
$q.services.forEach(function(entry){
alert(entry);
});
deferred.resolve();
}
})
.error(function (err) {
$('#al_msg').html('<div class="alert alert-danger"><span>Error! Can\'t Complete Login Process.</span><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button></div>'); deferred.reject();
});
return deferred.promise;
}
};
});
问题是此代码无效。我不知道问题出在哪里。请帮我解决一下。感谢
答案 0 :(得分:1)
您将服务/工厂定义为ProjectBudgetService
,但正在注入ProjectAppService
似乎只是一个简单的拼写错误,但会阻止您的服务/工厂正确地注入您的控制器。检查您的控制台,看看您遇到的错误。
答案 1 :(得分:0)
如果在控制器中使用$ watch,则可以在加载与控制器关联的页面时调用该服务。这样的事情。
$scope.$watch('$viewContentLoaded', function() {
ProjectBudgetService.save().then( ... );
});