2017-08-01 38 views
0

私は3つのラジオボタンがxyzと言っています。 xclickでは、データがロードされ、その..に localStorageにオブジェクトの配列を格納する方法は?

は今のlocalStorageに、私は違っ xyzのためのデータを設定し、それを取得したいです。

ここでは、プログラムのサンプルを提供しています。

Javascriptを:

var setInLocalStorage = function(){ 
    //on click of x radio and getting data from model and called 
    // from one function 
    var x = { 
     t = model.x.t; 
     d = model.x.d; 
    } 
    localStorage.setItem('x' ,JSON.stringyfy(x)); 
} 

var getFromLocalStorage = function() { 
    var obj = JSON.parse(localStorage.getItem('x')); 
    //storing back to model 
    model.x.t = obj.t; 
    model.x.d = obj.d; 
    // populating data on screen which was stored in local storage 
    $scope.x.t = model.x.t ; 
    $scope.x.d = model.x.d; 
} 

yzのデータを格納するためのラジオボタンに切り替えるには、画面に表示されるはずですどのように?

+0

(https://github.com/grevory/angular-local-storage)[角度ローカルストレージ]を使用してみてください代わり 'localStorage' – Maher

+2

JSON.stringyfy? JSON.stringifyにする必要があります – Fetrarij

+0

なぜあなたはこれに '角度サービス'を使用しないのですか? –

答えて

5

JSON.stringifyJSON.parseを使用してください。コードに入力ミスがあり、各プロパティを設定する必要はありません。スコープにxを設定するだけです。

var setInLocalStorage = function(){ 
    var x = model.x 
    localStorage.setItem('x', JSON.stringify(x)); 
} 

var getFromLocalStorage = function() { 
    var obj = JSON.parse(localStorage.getItem('x')); 
    model.x = obj; 
    $scope.x = model.x; 
} 

ただし、コントローラでこれらのタイプの操作を実行しないことをお勧めします。これにはangular.factoryまたはangular.serviceを使用する必要があります。詳細について

import { Component, OnInit } from '@angular/core'; 

import { CoolLocalStorage } from 'angular2-cool-storage'; 

@Component({ 
    selector: 'my-app' 
}) 
export class AppComponent implements OnInit { 
    localStorage: CoolLocalStorage; 

    constructor(localStorage: CoolLocalStorage) { 
     this.localStorage = localStorage; 
    } 

    ngOnInit() { 
     this.localStorage.setItem('itemKey', 'itemValue'); 

     console.log(this.localStorage.getItem('itemKey')); 

     this.localStorage.setObject('itemKey', { 
      someObject: 3 
     }); 

     console.log(this.localStorage.getObject('itemKey')); 
    } 
} 

:あなたのcontroller.jsであなたのX-storage.js

angular.factory('xStorage', function(){ 
var x = localStorage.getItem('x') || {}; 
return { 
    getX: function(){ 
    return x; 
    }, 
    setX: function(xData){ 
    x = xData; 
    localStorage.setItem('x', xData); 
    } 
} 
}) 

angular.controller('controllerName', function(xStorage){ 
$scope.x = xStorage.getX(); 

$scope.clickButton = function(anyValue) { 
    xStorage.setX(anyValue); 
} 
}) 
+0

これは私が他のラジオボタンをクリックしたときに機能しませんでした。そのラジオのために保存されたデータがありませんでした。 –

+1

@PJ angle.watchとともに使用し、変更時に値を設定する必要があります。 –

関連する問題