我是AngularJS的新手。我正在尝试在angularjs $http api
内进行app config
调用.Below是$ http api调用的代码。
.when('/programme/:programmename', {
templateUrl:"programme/info.html" ,
resolve: {
execute: function(userAPI,$rootScope,$route){
var url = $route.current.params.programmename;
url = url.replace(/-/g, ' ') ;
userAPI.getProgrammeid({programmename: url } , function(r){
$rootScope.Programmeid= r.getprogrammeidbyname.programmeidbyname.programmeid }
)}
}
})
根据Angularjs文档,解析块在控制器和模板之前执行,但在我的情况下,控制器在解析块之前执行
我尝试了承诺,但我陷入其中。
这是因为$http api call which is (userAPI.getProgrammeid({programmename: url }.....)
内的resolve block
吗?
我有点困惑
请帮我解决这个问题。
答案 0 :(得分:2)
execute
实际上是否会返回任何内容?它需要返回一个在你的函数完成时解决的promise。
我认为你误解了如何使用决心。它是取一些东西注入你的控制器。如果目标是获得programmeid
,则解析将如下所示:
resolve: {
programmeid: function (userAPI, $q, $route) {
var deferred = $q.defer();
var url = $route.current.params.programmename;
url = url.replace(/-/g, ' ') ;
userAPI.getProgrammeid({ programmename: url }, function (r) {
deferred.resolve(r.getprogrammeidbyname.programmeidbyname.programmeid);
// now that our promise is resolved, our controller should execute
});
return deferred.promise;
}
}
然后您可以在控制器中访问它,如下所示:
app.controller('someCtrl', function ($scope, programmeid) {
$scope.programmeid = programmeid;
});