1

Backbone.js에서 표시 할 JSON 파일을 디자인 할 때 모범 사례에 대한 질문이 있습니다. Backbone은이 주제에서 완전히 불가 지론이지만, 누군가가이 특정 상황에서 나에게 좋은 조언을 줄 것입니다. 결국 JSON 데이터의 Backbone.js 디자인 패턴

, 나는이

On 4th of July, in _____ we calebrate ____ day. 

___과 같이 몇 가지 견해를 가지고 내가 텍스트 입력하거나 선택합니다 텍스트의 간격을 의미 필요 (종류에 따라 다릅니다)하는 정확성 확인 될 것입니다.

그래서이 텍스트를 설명하는 JSON 파일이 필요합니다.

나는,

"body": [ 
      { 
       "preInputText": "On 4th of July, in ", 
       "postInputText": "", 
       "answers": [ 
        { 
         "ID": "1", 
         "content": "USA", 
         "correct": true 
        }, 
        { 
         "ID": "2", 
         "content": "Canada", 
         "correct": false 
        }, 
       ] 
      } 
] 
etc… 

그래서 첫 번째 방법은 하나 개의보기로를 통과하는 두 개의 컬렉션을 만들어 시행

"body": [ 
      { 
       "preInputText": "On 4th of July, in ", 
       "postInputText": "", 
       "answersID": ["1", "2"] 
      }, 
      { 
       "preInputText": "we calebrate ", 
       "postInputText": " day", 
       "answersID": ["3"] 
      } 
    ] 
"answers": [ 
      { 
       "ID": "1", 
       "content": "USA", 
       "correct": true 
      }, 
      { 
       "ID": "2", 
       "content": "Canada", 
       "correct": false 
      }, 
      { 
       "ID": "3", 
       "content": "Independent", 
       "correct": true 
      } 

    ] 

또는, 어쩌면 simpleier하지만 그다지 평평하지 이런 식으로 뭔가에 대해 생각 그리고 그들 사이에 값을 확인하십시오. 두 번째 모델은 본문과 답변을 모두 포함하지만 모델을 초기화하고 중첩 된 구조를 사용하여 파싱합니다.

중첩 된 모델을 사용하는 것은 나쁘지 만 백본은 더 평평한 방식으로 생각하도록 고안되었습니다.

어쩌면 다른 논리가 있습니까? 어떻게 생각해?

감사합니다.

답변

1

저는 첫 번째 접근 방법 (플랫 한 방법)이 더 많습니다. 두 가지 컬렉션을 만드는 것을 당신에게 동의하지 않습니다.

당신은 항상 하나의 컬렉션을 만들하고 parse 함수의 오버라이드 (override), 같은 것을 할 수 있습니다

var MyCollection = Backbone.Collection.extend({ 
    ... 
    parse: function(resp) { 
     this.answers = new Backbone.Collection(resp.answers); 
     return resp.body; 
    } 
}); 

... 

// myCollection is an instance of MyCollection 
myCollection.models // refer to questions 
myCollection.answers // refer to answers 
+0

을하지만 이런 식으로 방법을 '얻을'사용할 수 있습니까? – user1854236

+0

물론 정확한 값을 얻기 위해, 지금은 콜렉션이 아니라 단지 배열이기 때문에. – user1854236

+0

get을 사용할 수는 없지만 객체의 배열이기 때문에 원하는대로'myCollection.answers'를 조작 할 수 있습니다. –

1
"body": [ 
      { 
       "preInputText": "On 4th of July, in ", 
       "postInputText": "", 
       "answers" [ { "ID": "1", "content": "USA", "correct": "true"}, 
          { "ID": "1", "content": "canada", "correct": "false"} 
          ] 
      }, 

      { 
       "preInputText": "we calebrate ", 
       "postInputText": " day", 
       "answersID": [{ "ID": "3", "content": "Independent", "correct": "true"}, 

          ] 
      } 


    ] 

이 구조를 사용하면 하나의 컬렉션을 사용해야합니다. 그런 다음이 객체의 각 객체를 모델로 처리하고 컬렉션 뷰에서 개별 뷰를 사용하여 렌더링 할 수 있습니다. 그래서 여기에 중첩 된 모델을 사용해야합니다.