backbone.js : Кнопка в представлении, которая влияет на другую модель в коллекции

#javascript #model-view-controller #backbone.js

#javascript #модель-представление-контроллер #backbone.js

Вопрос:

Я только начинаю с backbone.js. Пока что мне это действительно нравится.

У меня есть что-то вроде этого:

  • Модель
  • ModelB
  • Просмотр
  • ViewB

ModelA содержит коллекцию ModelB

Как я могу создать ViewB ModelB с помощью кнопки, которая при нажатии изменяет атрибут в следующем экземпляре ModelB в коллекции?

Ответ №1:

 var col = this.model.collection;
var nextModel = col.at( col.indexOf(this.model)   1)
if(nextModel) nextModel.set({whatevar});
  

Вам не нужно отслеживать родительскую коллекцию, backbone делает это за вас.
Вам также следует проверить, находитесь ли вы в конце коллекции.

Комментарии:

1. Мне это нравится. The backbone.js картинка становится для меня все яснее и яснее. Очевидно, что это сделано людьми, которые все продумали и проверили свою работу на реальных решениях. Спасибо.

2. Это есть в документации? Я не могу ее найти.

3. Ну, это есть в коде. Вы можете прочитать аннотированную версию здесь documentcloud.github.com/backbone/docs/backbone.html небольшое предостережение, если вы добавите свою модель более чем в 1 коллекцию, ссылка будет только на последнюю.

Ответ №2:

Я думаю, что я кое-что понял. Я поделюсь, чтобы узнать, что думают другие, чтобы другие могли извлечь выгоду.

Я просто передаю ссылку на родительскую коллекцию каждой модели в коллекции.

Внутри моей коллекции при добавлении нового экземпляра:

 var newModelBInstance = new ModelB( { id: "xxx", ParentCollection: this } );
  

И затем, в моем представлении ModelB:

 this.model.get("ParentCollection").at(this.model.sortValue   1).set({ myAttr: false });