Hallo Freunde Ich bin neu in eckigen und wollte eine einzelne Seite Anwendung erstellen.nicht in der Lage, Daten zu speichern localStorage mit Angular
Mein Code funktioniert gut, wenn Sie eine Liste von Produkten erstellen und wenn Sie auf Produkt klicken Ich lande zur Detailseite, die absolut gut funktioniert, aber jetzt möchte ich eine andere Liste zeigen, die schon gesehene Produkte zeigt.
Ich starrte die Lösungen zu graben, und kam mit einiger Idee ProductId
in einigen Array zu schieben durch $routePrams
verwendet, die fein arbeiten, bis der Benutzer die Seite neu zu laden, weil nach der Seite neu lädt all gespeicherten ProductId
von Array verschwunden. Ich habe auch versucht, Daten zu speichern, zu localscheiterte aber und kam dann hier, um Hilfe zu suchen ... Bitte überprüfen Sie meinen Code unten und bitte vorschlagen, wenn sie eine andere Möglichkeit ist
controller.js diese Scheiße zu knacken
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);
}
});
});
})
}])