0

Контроллер Angularjs не может решить данные службы.AngularJS: Услуги не разрешены в моем контроллере

var kattaApp = angular.module('kattaApp', []).controller('kattaController', function($scope, dataFactory) { 
    var promise = dataFactory.getResult().then(function(data) { 
     return data; 
     console.log(data); 
    }); 
    promise.then(function(data) { 
     $scope.message = data; 
     console.log(data.geonames[0].countrycode); 
    }); 
    console.log(" :'(Scope is not working " + $scope.message); 
}); 
angular.module('kattaApp').factory('dataFactory', function($http, $q) { 
    return { 
     getResult: getResult 
    }; 

    function getResult() { 
     var deferred = $q.defer(); 
     $http.get('http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo').success(function(data, status) { 
      deferred.resolve(data); 
     }).error(function(data) { 
      deferred.reject(data); 
     }); 
     return deferred.promise; 
    }; 
}); 

В приведенном выше коде я пытаюсь установить значение для $scope.message. Когда я звоню в службу, он возвращает данные как неопределенные и через некоторое время получает данные и печатает на моей консоли.

Пожалуйста, посмотрите на мой Plnkr Link

+0

ваш 'console.log (данные);' ничего не будет регистрировать, так как он после 'возвращения данных;' – DonJuwe

ответ

0

Вы видите результат, как

:'(Scope is not working undefined 

в консоли браузера, потому что вы сохранили

console.log(" :'(Scope is not working "+$scope.message); 

снаружи, то перезвоните положить его внутрь, то звонить назад, и вы получите $scope.message с правильными значениями.

Если вы измените обещание, то к чему-то вроде этого.

promise.then(function(data){ 
    $scope.message = data.geonames[0].countrycode; 
     console.log(data.geonames[0].countrycode); 
     console.log("$scope.message: "+$scope.message); 
    }); 

вы получите сообщение, как

$ scope.message: MX

Здесь обновляется plunker link

Upadate

удалить $ Сфера из {{}} scope.message

вместо этого использовать его как

<h6>{{ message}}</h6> 
+0

Наблюдали ли вы, что Я пытаюсь напечатать значение {{$ scope.message}} в html, но это не получается. Вот где у меня проблема – Hurix

+0

@hurix см. Обновленный ответ. также обновленный plunk. –

+0

Согласно вашему комментарию в DonJuwe, ответ. Я также хочу проверить значение $ scope.message вне функции обратного вызова. Это возможно ?? – Hurix

1

Были несколько ошибок в коде, и я получил эту работу, например <h6>{{ message }}</h6> вместо <h6>{{ $scope.message }}</h6>.

Я надеюсь, что это то, что вы ищете:

PLUNKR

Смежные вопросы