使用实时验证创建Ember表单的最佳做法是什么?

时间:2013-08-01 23:29:03

标签: devise ember.js

我有一个用Ember + Handlebars编写的用户注册表。我是两个人的新手。我想在用户输入时对表单进行实时验证。为此,我需要能够观察变化事件并做出明智的反应。

我原以为我可以在我的视图中声明email属性并观察其变化。然后询问服务器是否已存在email

我可以想到几种方法来做到这一点,但看不出明显的赢家。我已经尝试过整体观察视图的变化,但这看起来很笨拙。现在我正在尝试创建一个new-user对象并将逻辑存储在那里,但Ember希望将其连接回服务器。我在这里有点不知所措。

欢迎任何建议。

这是我现在的观点:

FitMap.JoinView = Ember.View.extend({
  templateName: "join",

  name: null,
  email: null,
  password: null,
  password_confirmation: null,

  submit: function(event, view) {
    event.preventDefault();
    event.stopPropagation();

    $.post("/users", {
      name: this.get("name"),
      email: this.get("email"),
      password: this.get("password"),
      password_confirmation: this.get("password_confirmation")
    }, function() {
      console.log("created");
    })
    .fail(function(response) {
      console.log(response);
    });
  }
});

1 个答案:

答案 0 :(得分:2)

我以这种方式使用jQuery validation

FitMap.JoinView = Ember.View.extend({
  templateName: "join",
  name: null,
  email: null,
  password: null,
  password_confirmation: null,
  didInsertElement: function() {
      var frm = $("#" + this.elementId);
      frm.validate({rules: ...});
  },
  submit: function(event, view) {
    event.preventDefault();
    event.stopPropagation();
    var frm = $("#" + this.elementId);
    if (!frm.valid()) {
        console.log("form is not in a valid state");
        return false;
    }
  })
});

jQuery验证允许您在规则内部定义远程验证,我正在使用它来检查用户名/电子邮件是否已被使用。