这个问题已经被问到,但我无法弄清楚在我的情况下该怎么做。AngularJS,在显示视图前解析数据
使用AngularJS 1.0.5:
显示视图“登陆”之前,我想要得到的一些数据和延迟视图呈现,而数据不是从一个AJAX请求加载。
以下是主要代码。这是好方法吗?
angular.module('tfc', ['tfc.config', 'tfc.services', 'tfc.controllers']).config([
'$routeProvider', '$locationProvider', '$httpProvider',
function($routeProvider, $locationProvider, $httpProvider) {
$routeProvider.when('/login', {
templateUrl: 'views/login.html',
controller: "RouteController",
resolve: {
data: function(DataResolver) {
return DataResolver();
}
}
});
}
]);
module_services = angular.module("tfc.services", []);
module_services.factory("DataResolver", [
"$route", function($route) {
console.log("init");
return function() {
// Tabletop is a lib to get data from google spreadsheets
// basically this is an ajax request
return Tabletop.init({
key: "xxxxx",
callback: function(data, tabletop) {
console.log("[Debug][DataResolver] Data received!");
return data;
}
});
};
}
]);
也许来自AngularJS的创建者的答案可以帮助你:http://stackoverflow.com/a/11972028/449162 – L42y 2013-03-06 13:22:52
你也可以将AJAX请求的结果分配给你的$ scope中的某些东西,并使用ng-show HTML。 – boxed 2013-03-06 16:00:01
这是一个非常可靠的方法。它比使用ng-show或ng-hide更好,因为在你的控制器中,你已经拥有了你的数据并且可以编写更多的同步代码。也就是说,这比代码审查网站更适合SO,因为你没有问题,只是寻找代码的改进。 – 2014-07-31 23:58:17