Приветствую вас, я новичок в угловом и хотел создать одностраничное приложение.не удалось сохранить данные на localStorage, используя Angular
Мой код работает отлично при создании списка продуктов, и при нажатии на продукт я приземлюсь на страницу с подробной информацией, которая работает абсолютно нормально, но теперь я хочу показать другой список, который покажет уже просмотренные продукты.
Я смотрел выкопать решения и придумали какой-то идеей, чтобы подтолкнуть ProductId
в некотором массиве с помощью $routePrams
, который работает отлично, пока пользователь не перезагрузите страницу, так как после перезагрузки страницы все спасенные ProductId
исчез из массива. Я также попытался сохранить данные LocalStorage, но не удалось, и тогда пришли сюда искать помощь ... Пожалуйста, проверьте мой код ниже, и пожалуйста, предложите, если их любой другой способ взломать это дерьмо
controller.js
var myApp = angular.module('assignment', ['ngRoute']);
var viewedProducts = []; // created a global empty array
var uniqueNames = []; // created second global empty array
myApp.config(['$routeProvider',function($routeProvider) {
$routeProvider.when('/',{
templateUrl : 'list/list.html'
})
.when('/:productId',{ // Passing productId
templateUrl : 'detail/detail.html'
})
}])
myApp.service('myData', ['$http', function($http){
return{
itemList : function(){
return $http({'method': 'GET', 'url' : 'js/data.json'}).then(function(response){
return response.data;
}, function(data){
console.log(data);
})
}
}
}])
myApp.controller('itemData', ['$scope','$http', 'myData', function($scope, $http, myData){
myData.itemList().then(function(data){
$scope.items = data;
}, function(){
console.log(data);
})
}])
myApp.controller('details', ['$scope', '$http', '$routeParams', 'myData', function($scope, $http, $routeParams, myData){
$scope.product = $routeParams; // Getting Product Id using $routeParams
myData.itemList().then(function(data){
angular.forEach(data, function(value, key){
if(value.productId == $routeParams.productId) {
$scope.product = value;
viewedProducts.push(value.productId);
/*Trying to same data to localStorage*/
localStorage.setItem('viewedItems', viewedProducts);
var getViewed = localStorage.getItem('viewedItems');
getViewed = getViewed.split(',')
angular.forEach(getViewed, function(value, key){
if(uniqueNames.indexOf(viewedProducts[key]) === -1) {
uniqueNames.push(viewedProducts[key]);
}
});
}
});
});
}])
myApp.controller('viewedProducts', ['$scope', '$http', '$routeParams' , 'myData', function($scope, $http, $routeParams, myData){
$scope.viewed = [];
myData.itemList().then(function(data){
//$scope.items = data
angular.forEach(data, function(datavalue, datakey){
angular.forEach(uniqueNames, function(value, key){
if (datavalue.productId == uniqueNames[key] && datavalue.productId !== $routeParams.productId) {
$scope.viewed.push(datavalue);
}
});
});
})
}])