В моем шаблоне, у меня есть следующий код: <a ng-click="countryDetail(country.id)" style="cursor:pointer">{{country.name}}</a>
В моем нг-контроллер у меня есть этот код для извлечения данных из таблицы страны в моей БД:
$scope.countryDetail= function (id) {
if (!id) return;
Country.countryDetail(id)
.then(function (data) {
$scope.loadedCountry = Country.loadedCountry ;
console.log($scope.loadedCountry);
$state.go('country.detail', { 'countryId': id });
});
};
My service :
countryService.countryDetail = function (id) {
var deferred = $q.defer();
return $http.get(countryUrl + "detail/" + id)
.success(function (data) {
deferred.resolve(
countryService.loadedCountry = data);
})
.error(function (error) {
deferred.reject(error);
})
return deferred.promise;
}
состояния в моем app.js
.state('country.detail', {
url: '^/country/detail/{countryId:[0-9]{1,6}}',
templateUrl: 'app/country/countryDetail.html',
controller: 'countryCtrl'
})
Когда я нажмите на ссылку названия страны, консоль показывает объект страны с хорошими значениями, но шаблон country.detail имеет нулевой объект страны. Когда я добавил $scope.countryDetail()
после моей функции, данные отображаются в шаблоне детали, но на сервере есть 2 вызова! Итак, как можно использовать только один вызов без повторного вызова $scope.countryDetail()
?. Thanks
Похоже, что вы делаете '$ http' запрос в неправильный контроллер. Подумайте о том, чтобы сделать это в 'resolve'' country.detail' или из контроллера 'country.detail' – charlietfl
Запрос $ http находится в моей службе. Посмотрите мой первый вопрос, я добавил обновление – user708683
Правильно, но вы не хотите делать этот запрос перед изменением маршрутов.вы попадаете в данные с неправильной областью контроллера. – charlietfl