Я новичок в системе AngularJS и Ionic и используя базовые Starter Tabs Ionic template, я хочу иметь возможность «Избранные/Закладки» некоторые элементы и отображать их на другой вкладке.Показать только некоторые товары в AngularJS
Моя books.js
структура выглядит следующим образом:
.factory('Books', function() {
// books data
var books = [{
id: 0,
title: 'Sample Title',
author: 'Sample Author',
category: 'Horor, Fiction',
cover: '/cover.jpeg',
details: 'some details about the book',
chapters: [
{
id : 1,
name: 'Chapter 1',
filename: 'chapter1.html',
},
{
id : 2,
name: 'Chapter 2',
filename: 'Chapter2.html',
}
]
}
.....
return {
all: function() {
return books;
},
// remove a book from the list
remove: function(book) {
books.splice(books.indexOf(book), 1);
},
Теперь, если я хочу, чтобы иметь возможность добавить эту книгу в список, я должен создать новый массив? или angularJS предоставляет некоторую библиотеку, которая может хранить эти данные без фактического создания нового списка?
Я действительно не уверен, как подойти к этой проблеме.
Обновление # 1: После того, глядя на примере Энди, я сделал следующие изменения в controllers.js
.controller('DashCtrl', function($scope, Books) {
$scope.books = Books.all();
$scope.remove = function(book) {
Books.remove(book);
};
$scope.markFavorite = function(book) {
Books.isFavorite = true;
};
$scope.unmarkFavorite = function(book) {
Books.isFavorite = false;
};
})
и кнопки:
<ion-option-button class="button-assertive" ng-click="remove(book)">
Delete
</ion-option-button>
<ion-option-button class="button-positive" ng-click="markFavorite(book)">
Fav
</ion-option-button>
но с использованием следующего нг-повтор :
ng-repeat="book in books | filter:{isFavorite:true}"
Я не могу перечислить любимые книги.
Как далеко "любимый" обеспокоен я предлагаю вам добавить еще одно значение для каждого объекта книг. Затем сделайте их истинными/ложными на основе пользовательского выбора, тогда вы можете просто использовать 'filter' и отображать все избранные –
@AJ, поэтому добавьте другое значение, например' fav: false' для всех объектов, и используйте 'ng-click' для установки каждого отдельного item to true? –
Да, это то, что я предлагаю. Если вы создаете новый объект, вам нужно сменить оба объекта. Поэтому я бы предложил использовать это. –