2015-06-03 3 views
0

Есть ли рекомендуемый подход или шаблон для следующего потока приложений?привязка свойств модели в Ember/Ember-Data

  1. Пользователь вводит маршрут
  2. модель маршрута извлекается и представлена ​​пользователю через шаблон.
  3. Входы шаблона привязаны к свойствам модели, так как пользователь их модифицирует, данные в магазине обновляются «на лету».
  4. пользователь переходит от маршрута, не задев «Сохранить»

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

Мой текущий подход к проблеме это и он чувствует себя очень неуклюжим:

В setupController крючке, я установил несколько значений по умолчанию свойств из модели с помощью Ember.copy разорвать связывание:

setupController: function(controller, model) { 
    this._super(controller, model); 

    var goals = model.get('goals'); 

    controller.set('goalOne', Ember.copy(defaultGoal.get('goalOne'))); 
    controller.set('goalTwo', Ember.copy(defaultGoal.get('goalTwo'))); 
    controller.set('goalThree', Ember.copy(defaultGoal.get('goalThree'))); 
} 

Свяжите свои входы в эти значения вместо:

{{input value=goalOne type='text'}} 

При нажатии сохранить, вызовите updateModel() метод, который устанавливает эти значения обратно к модели и сохраняется на бэкэнде.

updateModel: function() { 
    var model = this.get('content'); 
    model.set('goalOne', this.get('goalOne'); 
    model.set('goalTwo', this.get('goalTwo'); 
    model.set('goalThree', this.get('goalThree'); 
} 

actions: { 
    save: function() { 
     this.updateModel(); 
     this.get('content').save(); 
    } 
} 

ответ

1

Отъезд ember-data-route. Он позволяет напрямую привязываться к моделям и автоматически откатывается назад, если пользователи перемещаются без сохранения.

+0

Это похоже на действительно полезный плагин. Похоже, что это должно быть поведение по умолчанию. Я собираюсь попробовать. –

Смежные вопросы