1

我正在尝试 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(),但这不起作用。我应该如何去做这项工作?

4

2 回答 2

1

请试试这个

App.JoinController = Ember.ObjectController.extend({
   submit: function() {
      this.validate().then(function(){
         //if valid do actions
      }).catch(function(){
        //errors
     })
   }
});
于 2015-12-01T06:41:12.570 回答
0

我想你应该尝试访问控制器content属性而不是model,这样的东西应该可以工作:

App.JoinController = Ember.ObjectController.extend({
  submit: function() {
   // Run validations again
   // Send to server if okay
   this.get("content").validate();
  }
});

有关伪工作演示,请参见此处

希望能帮助到你。

于 2013-08-02T23:26:57.800 回答