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

时间:2012-12-23 22:28:25

标签: forms validation ember.js

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

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

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

编辑:

为清楚起见,我使用Handlebars和绑定,而不是试图走DOM对象等。

1 个答案:

答案 0 :(得分:5)

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

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

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

你的把手模板看起来像这样:

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

<button {{action save content}}>Save</button>

您的应用程序中可以处理的可能状态

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