2016-10-08 3 views
1

json.stringifyの使用に問題があります。私は、アレイを保持するvarに別のオブジェクトを追加する機能を持つオンクリックのボタンを持っています。json.stringifyをループして自身を更新するにはどうすればよいですか?

var example = [{name: "K", age: 12},{name: "L", age: 12}]; 
var jsonE = JSON.stringify(example); 

例に別のオブジェクトを追加するたびに、jsonEの値は変更されません。

jsonを常に更新する方法はありますか?オブジェクトを配列に配置し、 "example"を文字列にすると、それ自体は更新できないためですか?私は使用すべきループがありますか?

SOLUTION:

上のクリックボタンが

+0

すべてのオブジェクトを配列に追加した後、JSON.stringify()メソッドを呼び出してみませんか? – Padmika

+1

*「オブジェクトを配列に配置するとjsonを絶えず更新する方法はありますか?」それは混乱する混乱になります。実際に必要なときにJSONを更新するのではなく、JSONを更新し続ける理由がわからないのですが、この動作を手動で管理するカスタムオブジェクトを作成することができます。 –

+0

@squint私は現時点でショッピングカートを作っているので、ユーザーがカートにアイテムを追加したいときは、addItem()で作成した関数から配列が更新され、JSON.stringifyを更新する必要がありますphpの配列をセッションに格納します。 – User9123

答えて

0

呼び出されたときには、単にバックオブジェクトを取得するためにJSON.parseを使用することができますし、それに新しいオブジェクトを追加することができますJSON.stringifyを作成し、再びそれを文字列化することができます。

var example = [{name: "K", age: 12},{name: "L", age: 12}]; 
var jsonE = JSON.stringify(example); 
// get objects 
var exampleParsed = JSON.parse(jsonE); 
// add new object to var 
exampleParsed.push({name: "M", age: 13}); 
// stringify new var 
JSON.stringify(exampleParsed); 

// output 
"[{"name":"K","age":12},{"name":"L","age":12},{"name":"M","age":13}]" 

これが(y)で動作するかどうかを確認してください。それに応じて、事業からの配列を切り離す

+0

これは初回のみ動作しますが、ありがとうございます:D – User9123

+0

@ User9123は初めて動作しますか?あなたは更新されたvarの新しいオブジェクトを押している場合、それは動作していないのですか? – pradeep1991singh

0

良い方法は、あなたが観察できるように、アレイをカプセル化した後、JSON.stringify依存レジスタaを持っている可能性がこれを行うにはobservable

として配列をモデル化することですコールバック

function ObservableArray() { 
    var self = this; 
    this.onPushCbs = []; 
    this.array = [] 
    this.push = function(value) { 
    this.array.push(value) 
    this.onPushCbs.forEach(function(cb) { 
     cb(self.array); 
    }) 
    } 
} 

var arr = new ObservableArray() 
// ObservableArray {onPushCbs: Array[0], array: Array[0]} 
// register event so every time that array is pushed to the value will 
// be logged 
arr.onPushCbs = [function(a) { console.log(a)}] 
arr.push('1') 
// logs ['1'] 
関連する問題