emberjs一次获取所有表单字段/值

时间:2015-03-17 14:05:04

标签: javascript forms ember.js

在ember.js中创建新的表单字段时,似乎有一个多步骤的过程。例如,我创建了表单字段:

{{input value=email type="email" placeholder="Email" required="required"}}
{{input value=password type="password" placeholder="Password" required="required"}}

然后在我的控制器中我有这个:

App.AccountController = Ember.ObjectController.extend({
    email: null,
    password: null,
    actions: {
      login: function() {
        var data = this.getProperties("email", "password");

            console.log(data);
      }
    }
});

正如您所看到的,电子邮件和密码在顶部定义为null,然后在数据var中再次定义为获取'值'当用户填写字段时。

有没有解决方法,我可以简单地说...在表单字段中取所有值,赋值为null然后在一行中获取所有表单字段值?类似可能在jQuery中序列化表单?

1 个答案:

答案 0 :(得分:4)

简短的回答是你需要重复。答案很长,你可以避免重复,但代价是不值得的。

首先,您不必在控制器中定义字段。这两行可以完全删除:

email: null,
password: null,

但是,我强烈建议您将其保留用于文档目的。 (虽然它们是不必要的。)

其次,你必须意识到Ember没有“形式”的概念。您没有指定任何表单,只有两个输入框。如果您愿意,您可以构建一个表单组件来完全按照您的意愿执行,但我只建议您构建一个 lot 表单。最后,你会有相当多的重复。

话虽如此,我认为你编写代码的方式是完美的。不要寻找编写代码的最短方法;寻找最可读的编写代码的方法。您目前拥有的代码是该代码中最易读的版本(在我看来)。


编辑:我没注意到ObjectController被使用了。如果未在控制器上显式设置字段,则转发获取并设置对控制器内容的调用。这意味着删除这两行将无法正常工作。但是,如果您从Controller而不是ObjectController(无论如何已弃用)延伸,它都会有效。