2012-12-02 4 views
3

저는 백본을 시작하기 시작했으며 한 지점에서 혼란스러워합니다.Backbone.js를 올바르게 사용하는 방법 목록을 표시하기위한 컬렉션

문서 목록을 표시하는 페이지가 있습니다.

목록의 문서를 클릭하면 편집 할 수있는 전체 문서가 열립니다.

내가 알고있는 바로는 백본에서이 목록을 모델링하는 적절한 방법은 문서 모델 모음입니다.

var DocList = Backbone.Collection.extend({ 
    model: document 
}); 

그러나 문서 모델은 많은 특성을 지닌 대형 모델입니다. 목록에 모든 정보가 표시 될 필요는 없습니다. shortDoc이 목록을 생성하기위한 목적으로 필요한 경우에만 속성이 모두 포함

는 다음과 같은 뭔가를하는 것이 바람직하다 만약 내가 궁금 ...

var ShortDoc = Backbone.Model.extend({}); 
var shortDoc = new Doc({ 
    id: id, 
    title: docTitle 
}); 
var DocList = Backbone.Collection.extend({ 
    model: shortDoc 
}); 

....

아니면 모델 전체에서 Collection을 사용하는 것이 더 좋습니까? 같은 모델에 대해 여러 Backbone.View의를 쓸 수 있습니다 명심

답변

4

당신의 도움에 대한 (사전에)

감사합니다. 전체 문서를 표시하는 DetailView을 가지고있을 수도 있지만 ItemView을 자유롭게 작성하여 목록보기에서 각 문서의 중요한 부분을 선보일 수 있습니다. 당신이 염려 데이터의 볼륨이 있다면,

var MyItemView = Backbone.View.extend({ 
    tagName: 'li', 
    render: function() { 
    this.$el.html('<h3>' + this.model.get('title') + '</h3>'); 
    return this; 
    } 
}); 

마지막으로 : 당신의 DetailView는 부엌 싱크대를 포함하는 동안, ItemView는 제목을 보여주는 제한 될 수있는 많은 백본 응용 프로그램을 유지하기 위해 선택 응용 프로그램에서 사용되는 모델의 각 유형에 대한 콜렉션. 그들의 국가는 어딘가에서 유지 될 필요가있다. 왜 잘 정리 된 목록에 없습니까? 응용 프로그램이로드 될 때 모든 모델 속성을 부트 스트랩 할 필요가 없습니다. 대신에 제목 (또는 초기 목록을 렌더링하는 데 필요한 항목)을로드하도록 선택하고 사용자가 세부 정보를 요청할 때까지 모델 가져 오기를 연기 할 수 있습니다.

0

질문 제목 (클래스, 인스턴스 및 데이터 표시)에는 3 가지 개념이 있습니다. 당신이 기본값이없는 경우

var Doc = Backbone.Model.extend({}); 
var DocList = Backbone.Collection.extend({ 
    url: '/docs', 
    model: Doc 
}); 

다음 실행 단계에서 데이터가없는 :

당신의 정의는 무엇인가해야한다.

var myDocList = new DocList(); 
myDocList.create({title: 'The first doc'}); 
/* no need for an id here if you're using centralized persistence, because 
"create" calls "save" witch in turn does an http post to your server which 
should return a JSON representation of your model including its id (Backbone 
will include it in your model). */ 

또는 그 (것)들에게 서버 측 읽기 :

var myDocList = new DocList(); 
myDocList.fetch(); 
/* Backbone will do an http get at DocList.url and create Doc instances with the 
    JSON array it should receive from your server*/ 
을 그리고 당신이 그들의 완전한 데이터 세트 (또는 그것의 단지 일부를) 할 수 있습니다 모델 컬렉션을 채우기 시작하거나 그들에게 클라이언트 측을 작성하여

docList의 표현이 길거나 복잡한 HTML이라면 새로 만든 요소에 항목을 추가 한 다음이 요소를 문서에 추가해야합니다. 각 요소에 대해 다시 칠하는 것보다 약 10 배 정도 빠르기 쉽습니다 목.

관련 문제