如果你擔心的HTTP請求的異步性質填寫你的$ scope.mydata變量,然後你需要將它包含在你的路由中的RESOLVE中。
我使用的UI路由器在我當前的項目:
(function() {
'use strict';
angular
.module('capps.core')
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home.capps', {
url: '/',
template: '<ui-view/>',
data: {
requireLogin: true
},
resolve:{
resolveFunction: resolveFunction
}
});
}
]);
resolveFunction['$inject'] = ['$http'];
function resolveFunction($http) {
return $http.get(API_URL)
.then(function(res) {
console.log(res);
});
}
})();
然後在你的控制器,你可以通過「resolveFunction」作爲一個依賴...然後使用分配給您的$範圍。 MYDATA的。
...
angular.controller('myController', myController);
myController.$inject = ['resolveFunction', '$scope'];
function myController(resolveFunction, $scope) {
$scope.mydata = resolveFunction.data;
console.log(mydata);
};
爲什麼不通過服務。那可以爲你提供那個終點? – jstuartmilne
mmm ...這是一個例子嗎? – Phate
我正在做這個來初始化[schemaform.io](http://schemaform.io)表單定義和模式JSONobjects。如果您正在使用第三方模塊,則可以觸發事件以重新初始化$ http.get()成功,或者如果它是您自己的模塊,請創建一個函數,使用新數據重新初始化模塊。 –