Я создаю приложение, использующее угловые и угловые ui-router для маршрутизации на основе состояния. У меня есть несколько маршрутов в моем приложении, но один из них требует внимания. Состояние определяется следующим образомпроблема с uil-маршрутизатором angularjs с разрешением
state('profile', {
url: '/profile',
controller: 'ProfileController', //controller on a different file
resolve: {
user_profile: ['User', function (User){
return User.getProfile(); //returns a json object
}]
},
templateUrl: 'profile.html'
})
Код getProfile: getProfile: функция() { вар д = $ q.defer();
$http.get('/profile')
.success(function(res){
if (res.status == 'success'){
d.resolve(res);
} else {
d.reject();
}
})
.error(function(reason){
d.reject(reason);
});
return d.promise;
}
Теперь в моем файле контроллера У меня есть следующий код:
.controller("ProfileController", ['$scope',function($scope,user_profile){
console.log(user_profile);
}]);
Дело в том, что решительность должна вводить разрешенные результаты в контроллере, на параметре имени User_Profile (потому что в ключах определение состояния, которое я использовал user_profile), и введенная зависимость имеет значение undefined, как указано в вызове console.log.
Я отлаживал свой код, и служба, которая извлекает профиль пользователя на сервере, работает очень хорошо, поэтому проблем нет. Даже если я использую возврат объекта на ключ разрешения user_profile, ошибка остается.
Другое дело, что если я, в определении состояния, задал свойство controller функции, определенной в определении состояния, тогда для зависимостей вводится правильное значение, но я не хочу этого, я хочу, чтобы зависимость впрыскивается на определенный контроллер и на встроенный контроллер.
Итак, что здесь может быть?
Заранее благодарим за любой ответ.
где код 'getProfile'? У вас также есть 'ng-controller' в шаблоне? – charlietfl
У меня нет директивы ng-controller на моем шаблоне, потому что в определении состояния я выставляю контроллер для состояния. Код getProfile() очень прост. Я отредактировал свой вопрос и добавил код – asolenzal
вправо, просто проверяя контроллер, потому что использование обоих не является необычной ошибкой. – charlietfl