@Eka2

Как правильно обновлять данные во view в процессе работы, имея опцию resolve?

Как правильно обновлять данные во view в процессе работы, имея опцию resolve, в которой выполняется первоначальная загрузка, не дублируя код:
- сделать как в примере и просто перезагрузить вид
- выделить отдельную процедуру в scope контроллера (или за пределами scope), которую вызывать через resolve и внутри контроллера?

angular.module('phonecat', ['phonecatFilters', 'phonecatServices', 'phonecatDirectives']).
  config(['$routeProvider', function($routeProvider) {
    $routeProvider.
      when('/phones', {
        templateUrl: 'partials/phone-list.html', 
        controller: PhoneListCtrl, 
        resolve: PhoneListCtrl.resolve})
}]);

function PhoneListCtrl($scope, phones) {
  $scope.phones = phones;
  $scope.orderProp = 'age';
}

PhoneListCtrl.resolve = {
  phones: function(Phone, $q) {
    var deferred = $q.defer();
    Phone.query(function(successData) {
            deferred.resolve(successData); 
    }, function(errorData) {
            deferred.reject();
    });
    return deferred.promise;
  }
}
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
Сделать сервис, который будет выполнять загрузку, этот сервис инжектим во все неоььходимые места. Методы сервиса возвращают promise, по сути вот то, что у вас сейчас в resolve вынести в сервис как сомостоятельную функцию. Опционально можно еще и сервис для хранения загруженных элементов сделать. И у вас какой-то старый очень код, методы $resource и так возвращают promise, вот эти всякие deffered не нужны.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы