У меня есть приложение, которое на данный момент содержит представление объектов той же модели. Они извлекаются с сервера, зацикливаются и добавляются в контроллер списка с помощью метода add
<script>
App.Controllers.List = Em.ArrayProxy.create({
content: Ember.A([]),
add: function(obj){
this.pushObject(obj);
}
});
</script>
Теперь я работаю над тем, где пользователь создает новый объект, который (после прохождения проверки) будет добавлен в список, а также отправлен на сервер.
Я не могу найти ни одного примера для лучшего выбора для создания нового объекта через форму ввода. Я могу видеть несколько вариантов и полу-реализован несколько, но ничего не кажется правильным.
- Создайте представление с соответствующими элементами формы и методом для создания экземпляра модели с использованием различных свойств, полученных из элементов формы, используя .get()
- Создайте модель в содержимом представления и привяжите элементы формы к этому. Включите метод представления для добавления в массив контроллера/сохранения на сервере.
- Создайте модель, добавьте ее в массив контроллера и откройте ее для редактирования.
Я могу отбиваться от функциональности, которую хочу, но я бы предпочел, чтобы я знал о лучшей практике.
В настоящее время у меня есть что-то вроде этого (это вторая пуля в моем списке)
<script>
App.Views.ItemCreate = Em.View.extend({
content: App.Models.Item.create({}),
templateName: 'create',
createButton: function(){
var itemObj = this.get('content');
var item = {};
item.title = this.get('content').get('title');
$.ajax({
type: 'POST',
url: '/test/data.json',
data: item,
dataType: 'json',
success: function(responseData, textStatus, jqXHR) {
App.Controllers.List.add(itemObj);
}
});
}
});
</script>
<script type="text/x-handlebars" data-template-name="create">
{{view Em.TextField id="create-title" valueBinding="content.title"}}
<a href="#" {{action "createButton" }}>Create</a>
</script>
Любая помощь очень ценится
ПРИМЕЧАНИЯ
Я изменил правильный ответ на pangratz's. Хотя другие ответы напрямую ответили на мой вопрос, я считаю, что те, кто находит это через Google, должны ссылаться на ответ Pangratz, который представлен не только как хороший MVC, но и более Ember-y: o)