Если вы беспокоитесь о асинхронной природе запроса 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 как зависимость ... затем использовать, чтобы присвоить переменные $ области. мои данные.
...
angular.controller('myController', myController);
myController.$inject = ['resolveFunction', '$scope'];
function myController(resolveFunction, $scope) {
$scope.mydata = resolveFunction.data;
console.log(mydata);
};
Почему бы вам не воспользоваться услугой. который может предоставить вам эту конечную точку? – jstuartmilne
ммм ... пример этого? – Phate
Я делаю именно это, чтобы инициализировать определение и схему формы [schemaform.io] (http://schemaform.io) JSONобъектов. Если вы используете сторонний модуль, вы можете инициировать событие для повторной инициализации вашего успеха $ http.get(), или если это ваш собственный модуль, создайте функцию, которая будет повторно инициализировать модуль новыми данными. –