注意:这是一个动态应用。
我使用了角度路线,所以我决定在加载控制器之前调用数据,我有多个页面有一个路由[动态路由],我能够为每个路由返回不同的数据页面,取决于它的slug,但是无论slug是什么,都会返回一些数据,所以为此我返回了一些返回true或false的数据键。
我要求的是能够检查密钥是否为真,并在加载控制器之前请求它的数据? 完全正面
// Routes
app.config(function($routeProvider, $locationProvider){
$routeProvider
.when('/:name', {
templateUrl: '/views/main.html',
controller: 'mainCtrl',
resolve: {
// RESOLVE THE MAIN DATA
page: function(srvLibrary,$route, $rootScope) {
return srvLibrary.getPage($route.current.pathParams.name);
},
// RESOLVE THE PROJECTS DATA
projects: function(srvLibrary,$route, $rootScope) {
return srvLibrary.getProjects();
}
}
});
});
// USING FACTORY TO RESOLVE DATA
app.factory('srvLibrary', ['$http','$rootScope', '$interval' ,'$route', function($http,$rootScope, $interval, $route) {
return {
getPage: function(slug) {
// THIS IS THE MAIN PAGE PROMISE [DYNAMIC ROUTED]
var promise = $http({
method: 'GET',
url: baseUrl + '/api/v1/page.json',
params: {menu_slug: slug}
})
promise.then(
function(data) {
return data;
},
function(error) {
return false;
},
function(progress) {
// report progress
});
return promise;
},
// PROJECTS DATA
getProjects: function() {
var promise = $http({
method: 'GET',
url: baseUrl + '/api/v1/portfolio.json'
});
promise.success(function(data) {
return data;
});
return promise;
},
}
});
// MAIN CONTROLLER
app.controller('mainCtrl', function($scope, page){
$scope.data = page.data;
$scope.projects = projects.data;
});

我能够使用控制器自己根据键返回数据,但是有一些延迟,控制器完全加载后的数据加载,某些函数[插件]没有工作可能和其他问题。
感谢阅读
答案 0 :(得分:1)
您可以收听$route
个$routeChangeSuccess
之类的resolve
个事件,这些事件会在{{1}}依赖项可用后触发。