Mat*_*att 9 javascript forms ember.js
在ember.js中创建新的表单字段时,似乎有一个多步骤的过程.例如,我创建表单字段:
{{input value=email type="email" placeholder="Email" required="required"}}
{{input value=password type="password" placeholder="Password" required="required"}}
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中我有这个:
App.AccountController = Ember.ObjectController.extend({
email: null,
password: null,
actions: {
login: function() {
var data = this.getProperties("email", "password");
console.log(data);
}
}
});
Run Code Online (Sandbox Code Playgroud)
如您所见,电子邮件和密码在顶部定义为null,然后在data var中再次定义为在用户填写字段时获取"值".
有没有办法解决这个问题,我可以简单地说...在表单字段中获取所有值,赋值为null,然后在一行中获取所有表单字段值?类似可能在jQuery中序列化表单?
简短的回答是你需要重复。长的答案是,您可以避免重复,但代价不值得。
首先,您不必在控制器中定义字段。这两行可以完全删除:
email: null,
password: null,
Run Code Online (Sandbox Code Playgroud)
但是,我强烈建议保留它们以用于文档目的。(不过它们是不必要的。)
其次,你必须意识到 Ember 没有“形式”的概念。您没有指定任何表单,只是两个输入框。如果您愿意,您可能可以构建一个表单组件来完全执行您想要的操作,但我仅建议您在构建大量表单时这样做。最后,你将会有相当多的重复。
话虽如此,我认为您编写代码的方式是完美的。不要寻找最短的编写代码的方法;寻找最易读的方式来编写代码。您当前拥有的代码是该代码中最具可读性的版本(在我看来)。
编辑:我没有注意到正在ObjectController
使用。如果未在控制器上显式设置字段,则将 get 和 set 调用转发到控制器的内容。这意味着删除这两行将不起作用。但是,如果您扩展 fromController
而不是ObjectController
(无论如何,它已被弃用),它将起作用。