Как сделать на angular так, чтобы при нажатии "заказать" парсились данные товара
У вас уже есть все данные в disks. Зачем их парсить?
1. Используйте ngClass,ngSrc:
Вместо:
<div ng-repeat="disk in disks | filter:search" class="product-block {{disk.Genre}}">
<img id="{{disk.ID}}_img" src="img/{{disk.Image}}" alt="">
2. Уберите все эти ID. Это не angular way.3. Если Вам нужна кнопка - используйте кнопку, а не ссылку:
Вместо:
<a href="" id="{{disk.ID}}">Заказать</a>
Надо:
<button type="button">Заказать</button>
4. Используйте ngClick директиву:<button type="button" ng-click="order(disk)">Заказать</button>
5. Для использования localstorage я рекомендую использовать специальный сервис (можно взять
этот).
6. Сохранение
В контроллере:
// Где-то внутри Вашего контроллера
// $scope.orderList - список заказов
$scope.order = function(disk) {
// Добавляем заказ. Будет выглядеть примерно так:
$scope.orderList.push(disk);
}
7.Товары, добавленные в корзину, храню в localstorage, так вот: как его очистить, чтобы данные на странице обновились без перезагрузки страницы?
$scope.clearAllOrders = function() {
$scope.orderList.length = 0;
}
8. При удалении аналогично - используйте Ваш контроллер и ngClick:<button type="button" ng-click="del(disk)">Отменить заказ</button>
В контроллере:
// Где-то внутри Вашего контроллера
$scope.del= function(disk) {
// Удаляем заказ. Будет выглядеть примерно так:
// Получаем индекс диска в массиве $scope.orderList
// Будьте внимательные - поиск идет по ссылке, а не по значению
var diskIndex = $scope.orderList.indexOf(disk) ;
$scope.orderList.splice(diskIndex,1);
}
9.То есть удаляется конкретный объект из массива и localstorage сохраняется с новыми данными.
reloader() - функция перезагрузки страницы.
Так вот, интересует как это можно реализовать без перезагрузки страницы.
Нормально через сервисы организуйте структуру данных и сделайте биндинги - все остальное за вас сделает ангуляр.
Вам подойдет watch:
// $scope.orderList - массив заказов
$scope.$watch('orderList',function(nv,ov){
localStorageService.set('ключ',angular.toJson(nv));
});
Получается связь scope.orderList -> localStorage и все синхронизированоUPD2.
Я изменил ответ - убрал лишний мусор, теперь все ок.