こんにちは私は新しく角度があり、単一のページアプリケーションを作成したいと考えました。角度を使用してlocalStorageにデータを保存できません
製品のリストを作成して製品をクリックすると、コードが正常に機能しています。詳細ページに移動しますが、これは問題なく動作していますが、今は既に表示されている製品を表示する別のリストを表示します。
は私が解決策を掘るために見つめていたと後に保存されたProductId
は、アレイから消え、すべてのページをリロードするため、ユーザーがページをリロードするまで正常に動作している
$routePrams
を使用することによって、いくつかの配列に
ProductId
をプッシュするためにいくつかのアイデアを思い付きました。私はまたのlocalStorageにデータを保存しようとしましたが、失敗して、助けを求めるためにここに来た...以下の私のコードを確認してくださいと
controller.js
このたわごとをクラックする他の方法は、彼らのであれば提案してくださいあなたはJSON.stringifyとあなたの配列を文字列化する必要があるので、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);
}
});
});
})
}])