2012-01-09 4 views
10

でネストされたJSONからコレクション/モデルを構築するためにどのように私は絵が示しように、私はJSONを持ってBACKBONE.JSはBACKBONE.JS

にrelativly新たなんです! Backbone-Relationalとの関係でいくつかのAnswersを見たことがありますが、それでもポイントが得られません!

私はこれをどのように変換できますか?JSONをBackbone.jsコレクション/モデルに変換しますか?

コードで更新しますが、期待どおりに機能しません。

私の構造は次のとおりです:

[0]:モデル

のコレクションがある

[音部記号] + ... + [休憩]:コレクションしている私が行うときのモデルを見ることができませんモデルの

(音部記号)=> [0] + ... + [9]:モデル(タイトルがあまりにも文字列、パスが含まれています)

おかげでたくさんです!

EDIT(10.01.12):

マイソリューション:

window.initModel = Backbone.Model.extend({ 
    defaults: { 
    "title": "", 
    "path": "" 
    } 
}); 
window.CustomCollection = Backbone.Collection.extend({ 
    model: initModel 
}); 
window.Init = Backbone.Model.extend({ 
    url : function(){ 
    return "/api/data.json"  
    }, 

    parse: function(response) { 

    clefs = new CustomCollection(); 
    clefs.add(response.clefs);   
    this.set({clefs: clefs}); 

    ..... 

    rests = new CustomCollection(); 
    rests.add(response.rests);   
    this.set({rests: rests}); 
} 
}); 

thisはあまりにも私を助けて!

Nested Array

+0

ネストしたバックボーンモデル/コレクションも持っていますか? )あなたの要件に応じて、必要に応じて100%。あなたは、単一のオブジェクトで、1つだけのバックボーンモデルとによって得ることができるかもしれません。 –

+0

@trouble Backbone-Relationalと一緒に行った後、私はあなたの解決策(パースを無効にする)を行った。バックボーン・リレーショナルでは、特定のイベント「追加」などが発射されず、問題を引き起こしていました。投稿ありがとう! – greenimpala

答えて

17

ます

私は仕事でので、私はあなたに完全にコード化された答えを与えることはできませんが、バックボーン・リレーショナル

var AmericasNextTopModel = Backbone.Models.extend({ 
    initialize: function(){ 

     this.set({ 
      clefs: new ClefCollection(this.get('clefs')), 
      accidentals: new AccidentalCollection(this.get('accidentals')), 
      notes: new NoteCollection(this.get('notes')), 
      rests: new RestCollection(this.get('rests')) 
     }); 
    } 
}); 

私が使用していないので、私はあなたにそれについての答えを与えることはできません。要旨は、ネストされたモデルの階層構造を達成するために、あなたのトップレベルのモデルで、次の操作を行うことができ、あります。

あなたがオンライン楽譜ビューア/エディタを作っていますか? :Dクール私はそれが完了したらそれを見たいと思います。

+0

はい私は:D!私はいつ行ったのか教えてあげるよ!私はあなたの答えについて私の記事の更新を行う! – trouble

0

reset方法(see 'reset')は、コレクションにJSON配列を渡すことができます。 これはPUTメソッドに相当し、指定されたコレクションをJSONハッシュに置き換えます。

また、あなたは新しいコレクションを作成すると、既存のコレクションに追加、またはコンストラクターにJSONハッシュを渡すaddメソッドを使用することができます。あなたが適切な形式でそれを得るためにあなたの配列のいくつかの基本的なクリーニングアップを行う必要があり、その後、convert it to JSON

+1

ハァッ!私はあなたのポイントを参照してください!しかし、これは本当に私が真偽を収集するのに役立たない、...、休憩はない?私は本当にそれを持っている必要があるので、私はそれを記述する!間違っている場合は、私だけを修正してください!ありがとうございました! – trouble

+0

私の悪い!上記の画像はJSONです!申し訳ありません – trouble

0

私はそれが別のドメイン上にあるので、JSONなどのフィードをつかむためにPHPを使用しています。私はこれらの結果をJS変数に保存してから、これを使って私のバックボーンコレクションに入れるのに成功しました...

var feedCollection = new Backbone.Collection(); 
feedCollection.set(myFeedJSON.nestedObject.nestedArrayIWant);