我有一个用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);
});
}
});
我正在以这种方式使用jQuery验证
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验证允许您在规则内部定义远程验证,我正在使用它来检查用户名/电子邮件是否已被使用。