Обратная привязка Backbone.js (пользовательский интерфейс для модели) - PullRequest
1 голос
/ 03 марта 2012

Я пытаюсь сгенерировать формы с помощью Backbone.js,

Вот как я это делаю сейчас.

Каждый элемент ввода в форме имеет Model и View,Поэтому, как обычно, model содержит такие атрибуты, как type value name placeholder и т. Д.

По соглашению о магистральной сети я получил изменения в Model, отражающие UI

Но я хочу, чтобы произошло и обратное, то есть когда value элемента input изменяется, что должно отражаться на атрибуте модели value.

Вот где я сейчас нахожусь: prototype1.js

Я думаю о написании метода обновления для представления, который будет обновлять модель, что-то вроде это .Есть ли лучший способ сделать это?

PS:

Это не очень помогло поиск stackoverflow: обратная привязка модели backbone.js

Anyобщие советы также приветствуются вместе с ответом.

Ответы [ 2 ]

1 голос
/ 03 марта 2012

Я не вижу проблем с View, который обновляет состояние Model.На самом деле я думаю, что это очень правильный способ работы, поскольку View отвечает за управление взаимодействиями с пользователем , и обычно результатом взаимодействия с пользователем является изменение состояния модели.

Сказал, что я предлагаю:

  1. Используйте свойство events View для привязки изменений к элементам DOM вашего представления.
  2. Объявите методы в вашем представлении, которые вызываются при возникновении события, и изменяют состояние модели на эти методы.
1 голос
/ 03 марта 2012

Вы когда-нибудь слышали о backbone.modelbinding ? это плагин, созданный Дериком Бэйли, который был создан специально для этой цели,

как только модель меняется, она обновляет вид, как только вид изменится, он обновит модель.

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

инициализация довольно проста:

SomeView = Backbone.View.extend({
  render: function(){
    // ... render your form here
    $(this.el).html("... some html and content goes here ... ");

    // execute the model bindings
    Backbone.ModelBinding.bind(this);
  }
});

это базовая прямая привязка, Вы можете пойти намного дальше:

вы можете привязать модель к просмотру, который не рендерится (уже на странице) Вы можете привязать к нескольким свойствам модели Вы можете сделать привязку через атрибуты стиля привязки данных в форме, если вы хотите, чтобы Вы можете привязать к событиям модели

много вариантов, так что посмотрите на это и посмотрите, подходит ли оно вашему приложению.

...