2016-05-17 4 views
0

У меня есть состояние определяют как: #/приложение/упражнения /: идентификаторслужба Ионные не работает при изменении зрения

Это сервис, чтобы получить упражнения с сервера:

app.factory('ExercisesService', function (ApiEndpoint, $resource, $stateParams) { 
var exercises = $resource(ApiEndpoint.url + '/books/' + $stateParams.book_id + '/exercises/' + $stateParams.id); 
return exercises; 
}); 

И это контроллер:

app.controller('ExerciseCtrl', function ($scope, $state, $ionicPopup, ExercisesService, ExerciseTemplates, $ionicHistory, $cordovaMedia, $ionicLoading) { 

    var templates = ExerciseTemplates; 

    ExercisesService.get(function (Exercise) { 
      $scope.exercise = Exercise.exercise; 
      console.log($scope.exercise); 
      $scope.exercise_next = 1083; 
      $scope.exercise_content = JSON.parse($scope.exercise.content); 
      $scope.exercise_template = 'templates/exercise_templates/' + ExerciseTemplates[$scope.exercise.template_id - 1] + '.html'; 
    }); 
} 

Однако когда: идентификатор на изменении линии связи, контроллер снова запустит, но служба не работает и вид загрузки старого упражнения вместо нового. Я установил cached = false как глобальный, так и внутренний, но ничего не меняет. Кто-нибудь может мне помочь?

ответ

1

Это происходит потому, что услуги в угловых всегда являются одноточечными. Таким образом, объект упражнений всегда будет выглядеть в первый раз, когда он будет создан.

Существует несколько способов решения этой проблемы, но я предлагаю, чтобы ваша фабрика взяла идентификатор в качестве коляски, а затем передала идентификатор на завод с контроллера при запросе объекта, таким образом служба всегда вернет вам правильную объект.

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