我有一个应用程序,它目前包含同一模型的对象的视图。它们从服务器检索,循环并使用 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 的。虽然其他回复直接回答了我的问题,但我相信那些通过谷歌找到这个的人应该参考 Pangratz 提供的答案,因为它不仅是好的 MVC,而且更像是 Ember-y :o)