javascript 강좌 Backbone.js 수집 옵션



backbone.js 강좌 (2)

@ Paul의 답은 좋지만 url 속성이 함수가 될 수 있다는 점도 유의해야합니다. 제 생각에는 (그리고 최종 결과가 동일하기 때문에 단지 의견입니다.) 코드는 좀더 읽기 쉽습니다. 좀더 자세히 말하면, id를 initialize 하고 함수에서 참조를 설정하면됩니다 :

var Messages = Backbone.Collection.extend({
  initialize: function(models, options) {
    this.id = options.id;
  },
  url: function() {
    return '/messages/' + this.id;
  },
  model: Message,
});

var collection = new Messages([], { id: 2 });
collection.fetch();

그래도 id 와 모델 id 혼동하지 않는지 확인하십시오. @ Paul의 대답과 위의 코드는 각각 자신의 ID가있는 여러 Messages 컬렉션을 가지고 있다고 가정합니다. API 경로 /messages/<id>메시지 집합이 아닌 메시지 를 실제로 참조하는 경우 Collection의 /messages/url 을 설정하기 만하면 Backbone이 자동으로 /messages/<id> 를 사용합니다. 각 모델.

Backbone.js를 사용하여 모델 / 뷰 / 컬렉션을 작성했습니다. 내 콜렉션은 fetch 메소드를 사용하여 원격 서버에서 모델을로드합니다. 이 컬렉션에 필요한 url은 다음과 같은 id가 필요합니다. messages / {id}. 그러나 나는 콜렉션에 옵션을 전달할 수있는 확실한 방법을 찾지 못했습니다.

backbone.js 뷰는 view ([options])를 생성하여 전달하는 옵션을 허용하지만 컬렉션에는 생성시 모델 목록이 필요합니다. collection ([models]).

이 컬렉션에 매개 변수 / 옵션을 전달하는 "가장 깨끗한"방법은 무엇입니까?

단축 된 코드 :

var Messages = Backbone.Collection.extend({
 model: Message,
   url: 'http://url/messages/' + id
});

url 속성이 선언 된 방식은 브라우저가 처음에 javascript 파일을로드 할 때 값이 한 번 결정되며 'id'는 정의되지 않습니다.

Backbone.Collection은 생성자에서 옵션을 두 번째 인수로 사용하므로 id 값을 옵션으로 전달한 다음 컬렉션의 initialize 함수에서 url 값을 설정할 수 있습니다.

여기에 예제가있다.

var Messages = Backbone.Collection.extend({
  initialize: function(models, options) {
    this.url = 'http://url/messages/' + options.id;
  },
  model: Message,
});

var collection = new Messages([], { id: 2 });
collection.fetch();




backbone-collections