【发布时间】:2015-08-20 10:18:51
【问题描述】:
注意:这是一个动态应用程序。
我正在使用角度路由,所以我决定在加载控制器之前调用数据,我有一个路由 [动态路由] 的多个页面,我能够为每个页面返回不同的数据,具体取决于它是 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;
});
我能够使用自己的控制器根据键返回数据,但是存在一些延迟,控制器完全加载后数据当然会加载,某些功能 [插件] 可能无法正常工作,以及其他问题。
感谢阅读
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat