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, время: 16:00. |