2016-04-19 2 views
1

новый для AngularJS и пытается выяснить, как переназначить массив данных объектов (не входящих строк) между контроллерами. В настоящее время мой код перемещает данные в один контроллер («ChooseTabCtrl»), но я хочу нажать на другой контроллер («ListTabCtrl»), чтобы список отображался на другой странице. Я запутался. B/c Большинство примеров показывают только тогда, когда пользователь вводит строку текста. Мой проект добавляет fave, нажимая кнопку. Любая помощь будет оценена по достоинству.Нажатие массива данных объектов через сервис для нескольких контроллеров angularjs

+1

Есть несколько подходов, но я думаю, в вашем случае лучший подход был бы для определения службы, в которой вы сохраняете свои избранные. Поэтому вы можете использовать их с обоих контроллеров. – kabaehr

ответ

1

Вы можете создать сервис для этого. Как:

.service('FavoritesService', function(){ 
    var favorites = []; 

    this.getFavorites = function(){ 
     return favorites; 
    }; 

    this.setFavorite = function(favorite){ 
     favorites.push(favorite); 
    }; 
}); 

Установите ваши любимые:

... 
if (!$scope.myFaveItems.some(isAlreadyPresent)) { 
    $scope.myFaveItems.unshift(item); 
    FavoritesService.setFavorite(item); 
} 
... 

Используйте его в ListCtrl:

.controller('ListTabCtrl', function($scope, FavoritesService) { 
    $scope.myFaveItems = FavoritesService.getFavorites(); 
}); 
+0

Спасибо за ответ, это прекрасно! – JBlaze321

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