【发布时间】:2013-03-06 09:30:33
【问题描述】:
这个主题已经被问过了,但我不知道在我的情况下该怎么做。
使用 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 的创造者的回答可以帮助你:stackoverflow.com/a/11972028/449162
-
您还可以将 AJAX 请求的结果分配给 $scope 中的某个内容,然后在 HTML 中使用 ng-show。
-
这是一种非常可靠的方法。它比使用 ng-show 或 ng-hide 要好得多,因为在您的控制器中,您已经拥有数据并且可以编写更多同步代码。也就是说,这比 SO 更适合代码审查网站,因为您没有问题,而是在寻找代码中的改进。
-
@L42y Misko 也问了这个问题。
标签: javascript angularjs