Ответ 1
Поскольку никто еще не ответил, я создал fiddle, показывающий, как я это сделал бы.
Это основной подход:
- Я бы установил контроллер со свежей (== пустой) моделью.
- Используйте привязки, чтобы синхронизировать значения элементов формы с моделью контроллера.
- Создайте действие, которое берет обновленную модель и делает с ней все, что вам нужно (это заменяет традиционную форму submit).
Таким образом, подход принципиально отличается от традиционного способа обработки форм таким образом:
- элемент HTML отсутствует, поскольку он не нужен.
- Данные автоматически не отправляются на сервер, вместо этого вы отправляете/отправляете его вручную с помощью javascript-логики. Imho это преимущество, поскольку вы могли выполнять дополнительную логику до или после отправки данных на сервер.
- Этот отлично работает с подходами REST-API, такими как ember-date или ember-epf: -)
В примере показана форма (просто концептуально, так как нет элемента HTML-формы) для ввода имени и фамилии. Введенные значения синхронизируются с моделью, и вы можете "выполнить отправку".
Код JS:
App = Ember.Application.create({});
App.Person = Ember.Object.extend({
firstName : "",
lastName : ""
});
App.IndexRoute = Ember.Route.extend({
model: function(){
return App.Person.create()
},
setupController : function(controller, model){
controller.set("model", model);
}
});
App.IndexController = Ember.ObjectController.extend({
submitAction : function(){
// here you could perform your actions like persisting to the server or so
alert("now we can submit the model:" + this.get("model"));
}
});
Шаблон, показывающий использование привязок значений:
<script type="text/x-handlebars" data-template-name="index">
<h2>Index Content:</h2>
{{input valueBinding="model.firstName"}}
{{input valueBinding="model.lastName"}}
<button {{action submitAction target="controller"}}>Pseudo Submit</button>
<p>{{model.firstName}} - {{model.lastName}}</p>
</script>