2014-04-01 2 views
1

소개 :여러 Backbone.js 컬렉션 옵션?

Node.js를 건물 및 백엔드에 표현, 나는 사용자의 세션 정보를 포함하는 localhost:3000/me 경로에 res.json(details)을 보낸다.

그래서 클라이언트 측에서 특정 사용자와 작업 할 수 있습니다. 예를 들어 클라이언트 측 초기화에서 이와 같은 코드를 작성합니다. 당신이 볼

var me = new MeModel(); 
me.fetch({ 
    success: function(response) { 
     App.data.me = me; 
     var messages = new MessagesCollection([], { id: response.get('user_id') }); 
     messages.fetch({ 
      success: function() { 
       App.data.messages = messages; 
       App.core.vent.trigger('app:start'); 
      } 
     }); 

    } 
}); 

은 내가 me 모델을 취득 MessagesCollection의 메시지를 필터링하는 것을 사용한다.


질문 :이처럼 내 MessagesCollection 내가 통과 옵션에서

.

module.exports = MessagesCollection = Backbone.Collection.extend({ 
    initialize: function(models, options) { 
     this.id = options.id; 
    }, 
    url: function() { 
     return '/api/messages/' + this.id; 
    }, 
    model: MessageModel, 
    //url: '/api/messages' 
}); 

var messages = new MessagesCollection([], { id: response.get('user_id') });

내 질문에 내가 window.App.data.messages.create(Message);를 실행할 때 다른 곳이 내가 정규 컬렉션에 게시 할 때 /api/messages/:id에 게시하고자한다 사용할 때 원하는 모델을 얻기에 좋은 곳입니다?

이론 :

그래서 분명히 내가 가장 좋은 것은 내가 가져 오는 방법에 모델을 필터링하는 방법을 다시 생각하는 것입니다 말할 것입니다. 그래서 기본적으로

내가을 GET .fetch()에 컬렉션을 필터링 ... 그리고 BTW 나는 꼭두각시를 사용하고 .create()POST

에 어떤 필터를 설정하지 할 필요가이 문제를 단순화하기 위해, 어쩌면 그것은 뭔가 도와 드릴까요?

답변

0

model.url() 모델의 리소스 이 서버에 위치 할 상대 URL을 반환합니다. 모델이 어딘가에 있으면 올바른 로직으로이 메소드를 대체하십시오. 기본적으로 "[collection.url]/[id]"형식의 URL을 생성하지만 모델 컬렉션이 이 아니어야하는 경우 명시적인 urlRoot를 지정하여 으로 재정의 할 수 있습니다.

URL을 생성하려면 콜렉션 # url에 위임해야하므로 이 정의되어 있는지 확인하십시오.이 클래스의 모든 모델 이 공통 루트 URL을 공유하는 경우 urlRoot 속성을 정의해야합니다. 백본에 저장된 ID가 101 인 모델입니다."/ 문서/7/노트"의 URL을 컬렉션 이 URL을 것이다 : "/ 문서/7/노트/101"그래서 당신은 MeModel에서 방법 URL을 정의 할 수 있습니다

http://backbonejs.org/#Model-url

및 거기에 URL을 생성하십시오 (다른 사용자가없는 경우 - 문자열을 "/ me"로 반환하거나 모델 속성을 기반으로 생성하십시오 (예 : 모델에 ID가있는 경우 스위치)

관련 문제