注意:这是一个动态应用程序。
我使用角路由,所以我做了一个决议,在加载控制器之前调用数据,我有多个页面,一个路由[动态路由],我能够为每个页面返回不同的数据,取决于它的弹头,但是一些数据将被返回,无论什么是弹头是,所以我返回了一些键的数据返回真或假。
我要求的是我是否能够检查一个键是否为真,并在加载控制器之前请求它的数据?完全前端
// 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;
});
我能够根据使用控制器本身的键返回数据,但是有一些延迟,数据当然在控制器完全加载后加载,一些功能[插件]可能不工作,以及其他问题。
感谢阅读
您可以监听$route
事件之一,如$routeChangeSuccess
,它在您的resolve
依赖项可用后触发。
https://docs.angularjs.org/api/ngRoute/service/美元路线