我正在使用AngularJS开展我的第一个项目,而且我没有找到这个问题的正确答案,这些是我的应用程序中的两段代码:
$routeProvider
.when('/claim/:code', {
templateUrl: 'views/RewardClaim.html',
controller: 'RewardClaimCtrl',
resolve: {
DataCode: ['Api', '$route', function (Api, $route) {
var code = $route.current.params.code;
return Api.code({code: code});
}]
}
})
.when('/:slug', {
templateUrl: 'views/Page.html',
controller: 'PageCtrl',
resolve: {
DataPage: ['Api', '$route', function (Api, $route) {
var slug = $route.current.params.slug;
return Api.page({slug: slug});
}]
}
})
.otherwise({
redirectTo: '/home'
});
这是我的工厂
angular.module('frontendApp')
.factory('Api', ['$resource', function ($resource) {
var SERVER_URL = '/api/index.php/';
return $resource(SERVER_URL, {}, {
code: {
method: 'GET',
url: SERVER_URL+'code/:code',
cache: true
},
page: {
method:'GET',
url: SERVER_URL+'page/:slug',
cache:true
}
});
}]);
有人告诉我,我不需要使用延迟/承诺因为 $ resource 作为承诺,所以 resolve 应该有效很好,并呈现视图,直到解决完成,但我遇到的问题是,如果我在控制器内调试 DataCode.data/DataPage.data 时打印出null api它正在返回信息。
$ resource 完成任务后,正确的方法是渲染视图和控制器吗?
AngularJS版本:1.2.4
感谢
答案 0 :(得分:1)
最后我找到了答案,这里是
$routeProvider
.when('/claim/:code', {
templateUrl: 'views/RewardClaim.html',
controller: 'RewardClaimCtrl',
resolve: {
DataCode: ['Api', '$route', function (Api, $route) {
var code = $route.current.params.code,
DataCode = Api.code({code: code});
return DataCode.$promise;
}]
}
})
.when('/:slug', {
templateUrl: 'views/Page.html',
controller: 'PageCtrl',
resolve: {
DataPage: ['Api', '$route', function (Api, $route) {
var slug = $route.current.params.slug,
DataPage = Api.page({slug: slug});
return DataPage.$promise;
}]
}
})
.otherwise({
redirectTo: '/home'
});
这是我找到解决方案的地方:phillippuleo.com