2012-01-09 2 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 % 필요). 하나의 개체로 단 하나의 백본 모델 만 있으면 얻을 수 있습니다. –

+0

@trouble Backbone-Relational과 함께 해본 후에는 솔루션을 사용했습니다 (구문 분석 무시). 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 Cool 당신이 끝나면 그것을보고 싶습니다.

+0

예할까요 : D !! 나는 메신저 할 때 알려 줄께! 나는 UR 응답에 대한 내 게시물에 업데이 트를! – trouble

0

reset 방법 (see 'reset')는 집합에 JSON 배열을 전달할 수있다. 이것은 PUT 메소드와 동일하며, 지정된 콜렉션을 JSON 해시로 대체합니다.

add 메서드를 사용하여 기존 컬렉션에 추가하거나 새 컬렉션을 만들 때 JSON 해시를 생성자에 전달할 수도 있습니다.

당신은 적절한 형식으로 얻을 수 있도록 배열의 기본적인 청소를 위로해야 할, 그리고 것이다 다음 convert it to JSON

+1

허! 나는 당신의 요점을 본다! 하지만 이건 정말 실마리를 만드는 데 도움이 안된다. 음자리표 모음, ... 나머지는 아닌가요? 나는 그것을 정말로 설명 할 필요가있다! 내가 잘못하면 그냥 날 정정 해! 고맙습니다! – trouble

+0

My Bad! 위의 그림은 JSON입니다! 죄송합니다 – trouble

0

피드가 다른 도메인에 있으므로 JSON으로 피드를 가져 오는 데 PHP를 사용하고 있습니다. 그 결과를 JS 변수에 저장 한 다음, 이것을 사용하여 백본 컬렉션에 넣는 데 성공했습니다. ...

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