如果你担心的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()成功,或者如果它是您自己的模块,请创建一个函数,使用新数据重新初始化模块。 –