2012-08-14 8 views
1

저는 최근에 백본에서 손을 잡고 있었고 아주 기본적인 질문을했습니다. 나는 다른 기록의 종류 및 검색 API를 검색해야백본 검색 다중 모델

{ foo: 
    [ 
     { name: 'foo1', url: '/foo1' }, 
     { name: 'foo2', url: '/foo2' } 
    ], 
    bar: 
    [ { name: 'bar1', url: '/bar1' } ], 
    baz: 
    [ { name: 'baz1', url: '/baz1' } ] 
} 

같은 JSON 응답이 나는 푸, 바, 바즈위한 백본 모델이 반환합니다. 가져 오기에서 내 서버에 충돌하여 검색 결과를 가져 오는 컬렉션입니다. 나는 그러나, 나는 서버에 의해 반환 된 결과를 내 컬렉션은 모델 푸, 바, 바즈을 보유하도록 구문을 분석하는 방법을 모른다

window.searchEntities = Backbone.Collection.extend({ 
    url: '/get_search_results' 

    model: function(attrs, options) { 
    //Typecast the JSON to Foo, Bar and Baz Models 
    });  
}); 

뭔가를 시도? 또는 서버에서 반환 된 결과를 조정하여 Backbone으로 처리하기 쉽도록해야합니까?

+1

나는 이런 종류의 아키텍쳐에 지옥으로가는 길을 가고 있다고 생각한다. 다른 한편으로는, 예를 들어'function'이 반환하지 않는 예제 코드에서 많은 불일치를 볼 수있다. 물건을 .. 그리고 나는 어떤 사람이 당신의'Collection.model()'에'attrs'와'options'를 보낼 것이라고 생각하지 않습니다 ... 당신이 JSON 요청을'attrs' 매개 변수로 받았다고해도,이'attrs [ 'foo']'는 JSON 예제의 어떤 것과도 일치하지 않습니다. 요약 : 혼동을 피하기 위해 질문을 다시 작성해야한다고 생각합니다. – fguillen

+0

@fguillen의 불일치를 지적 해 주셔서 감사합니다. 나는 약간의 질문을 단순화하려고 노력했다. 아직도 내가 완전히 잘못된 길을 가고 있다고 느낀다면 pls도 알려주므로 드로잉 보드로 돌아가겠습니다. – membLoper

답변

0

JSON이 3 개의 다른 모델을 반환하지 않지만 3 개의 다른 모델이 반환 됨으로 인해 3 개의 컬렉션이 배열을 포함하고 있음을 확인할 수 있습니다.

[ 
    { 
    type: "Foo", 
    name: "foo1", 
    url: "/foo1" 
    }, 

    { 
    type: "Foo", 
    name: "foo2", 
    url: "/foo2" 
    }, 

    { 
    type: "Bar", 
    name: "bar1", 
    url: "/bar1" 
    }, 

    { 
    type: "Baz", 
    name: "baz1", 
    url: "/baz1" 
    }, 
] 
내가 거기 컬렉션을 참조하십시오

, 그리고 또한 다른 모델 :

는 내가 이해 경우의 말을하자, 다른 유형의 모델의 무리를 반환 할 WEEL 당신이 처음부터 시작해야한다고 생각 다른 유형.

window.SearchEntities = Backbone.Collection.extend({ 
    url: '/get_search_results' 

    model: Result 
}); 

에서 : 지금

나는 당신이 당신의 예에서 보여처럼 당신이 model 속성을 재생할 수 있다고 생각하지 않습니다,의는 SEARCHCOLLECTION을 보자, 그래서 모든 모델을 가정 해 봅시다 공통 모델 부모 Result있다 여기에 우리가 간단 할 수 있으며위한 진짜 필요가없는 경우 결과의 하위 클래스를 생성하지 않는 :

window.Result = Backbone.Model.extend({ 
    initialize: function(){ 
    this.url = this.get("url"); 
    } 
}); 

가 그리고 당신은 완료 :

var searchEntities = new window.SearchEntities(); 
searchEntities.fetch(); 

// ... wait for the fetch ends 

searchEntities.at(0).get("type"); //=> "Foo" 

여전히 나는 두 가지 이유가 편하지 느끼지 않는다 : 당신이 Result.url 놀고 싶어 왜

  • 나는 분명히 표시되지 않습니다.
  • 모델의 ids은 어디에 있습니까? 이는 백본에서 매우 중요합니다.
+0

좋은 골격을 제공 한 fguillen에게 감사드립니다. 저는 현재 JSON 응답으로 놀고 있습니다.이 공간은 일단 정렬하면 나에게 맞는 것으로 업데이트 될 것입니다. – membLoper