使用ember.js进行字段和表单验证

mla*_*tti 2 forms validation ember.js

我从jsfiddle整合了Boronine优秀的ember.js字段验证代码.虽然这很精彩,但我仍然需要执行表单级别验证,以确保当用户提交表单时,一切正常.

最好的方法是什么?有没有一种方法可以将字段标记为已经过验证,以便表单处理程序可以简单地遍历字段以查看已验证的内容?

MP.SignUpFormView = Em.View.extend({
    submitLogin:function (event) {
        // walk through object fields to perform validation here, but how?!
    }
});
Run Code Online (Sandbox Code Playgroud)

编辑:

为了清楚起见,我正在用把手和有约束力的,而不是试图走DOM对象等.

Tre*_*cki 5

您尝试使用的模式在遵循文档脚本模式的应用程序中是有意义的,而Ember则不然.您可以强制执行此工作,但您会发现应用程序中的每个下一步都将变得越来越难.

在Ember中,显示由数据对象支持,因此Ember应用程序中的表单字段绑定到某个对象上的属性,并且在进行更改时,值会立即更新.你甚至不需要<form>除了造型之外的其他东西.

当用户想要对此对象采取某些操作(比如将其持久保存到服务器)时,应用程序的当前状态将回答"当用户现在想要采取此操作时会发生什么情况?"的问题.用户点击此处的按钮并不意味着"现在序列化表单中的数据并执行某些操作"这意味着"我已经完成了更改此对象的属性,并希望现在在应用程序中执行其他操作."

您的车把模板看起来像这样:

{{view Ember.Textfield valueBinding="name"}}
{{view Ember.Textfield valueBinding="age"}}

<button {{action save content}}>Save</button>
Run Code Online (Sandbox Code Playgroud)

并且可以在您的应用程序中处理可以处理的状态

Ember.Route.extend({
  save: function(router, event){
    if (event.context.validate()){
      router.transitionTo('someNewState')
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

  • 那里有几个对象验证库.我使用过https://github.com/lcoq/ember-validations (2认同)