UI-Router передача ajax-переменной в контроллер
Есть код:
mainApp.config(function($stateProvider, $urlRouterProvider, $locationProvider ) { $urlRouterProvider.otherwise("/err404"); $stateProvider .state('start', { url: "/", templateUrl: "views/c/search.html", controller: 'search' }) . . . . . . function search($scope,$http){ $http({method: 'JSONP', url: "http://my_site.com:3000"}). success(function(data) { $scope.c = data; }) } Если $scope.c присвоить константу вне функции $http, то всё прекрасно работает. Как мне заставить контроллер ждать ответа $http? |
Когда у тебя открывается url: "/", и в стейте прописан контроллер, то контроллер никого ждать не будет.
Но как вариант, попробуй вместо "success" использовать "then". Тогда $http провайдер точно будет ждать. $http({method: 'JSONP', url: "http://my_site.com:3000"}) .then(function(data) { $scope.c = data; },function(err){ // обработка ошибки }) |
Есть свойство resolve у статуса:
Цитата:
|
Цитата:
.... function search($scope,$http){ $scope.c = null; // добавочка $http({method: 'JSONP', url: "http://my_site.com:3000"}). success(function(data) { $scope.c = data; }) } Это нужно, чтобы до получение ответа сервера, значение $scope.c не было 'undefined'. После прихода ответа, полученное значение присвоится $scope.c автоматически (в этом суть сервиса q). |
Часовой пояс GMT +3, время: 17:52. |