#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 });