我正在试用DockYard中的ember-validations mixin。我有一个看起来像这样的NewUser对象:
App.NewUser = Ember.Object.extend(Ember.Validations.Mixin, {
name: null,
email: null,
password: null,
password_confirmation: null,
validations: {
name: {
presence: true
}
},
watchChanges: function() {
// Live validations...
this.validate();
}.observes("name", "email", "password", "password_confirmation")
});
我有一个控制器,其中包含submit
方法:
App.JoinController = Ember.ObjectController.extend({
submit: function() {
// Run validations again
// Send to server if okay
this.get("model").validate();
}
});
将模型链接到视图的路线:
App.JoinRoute = Ember.Route.extend({
model: function() {
return App.NewUser.create();
}
});
(这也是将提交方法转发给控制器的视图)
我不明白的是如何从Controller连接回模型对象以运行.validate()
。看起来我应该能够在控制器的提交方法中执行某些操作,例如this.get("model").validate()
,但这不起作用。我该怎么做才能做到这一点?
答案 0 :(得分:1)
请试试这个
App.JoinController = Ember.ObjectController.extend({
submit: function() {
this.validate().then(function(){
//if valid do actions
}).catch(function(){
//errors
})
}
});
答案 1 :(得分:0)
我想你应该尝试访问控制器content
属性而不是model
,这样的东西应该可以工作:
App.JoinController = Ember.ObjectController.extend({
submit: function() {
// Run validations again
// Send to server if okay
this.get("content").validate();
}
});
有关伪工作演示,请参阅here。
希望它有所帮助。