這個問題已經被問到,但我無法弄清楚在我的情況下該怎麼做。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