在Ember-ember-validations中动态设置验证对象

时间:2016-01-20 09:21:05

标签: javascript validation ember.js

使用dockyard/ember-validations设置验证规则的默认方式如下所示。

var Controller = Em.Controller.extend( 

{

validations:  {
'model.firstName':
  {presence:
    {message: 'First Name is a required field.'}
  },
'model.lastName':
  {presence:
    {message: 'Last Name is a required field.'}
  }  
},

..

}

但是我想根据条件选择这个验证对象,我选择如下的函数属性。

var Controller = Em.Controller.extend( 

{

validations: function() {
if(somecondition)
{
return{ 'model.firstName':
  {presence:
    {message: 'First Name is a required field.'}
  },
'model.lastName':
  {presence:
    {message: 'Last Name is a required field.'}
  }  
}
else
{..}
 }

 }.property(),

..

}

但是当我将其转换为函数时,ember-validations库无法按预期工作。我该如何缓解这种情况?

2 个答案:

答案 0 :(得分:1)

我建议看一下ember-cp-validations,它提供了扩展的验证选项。

答案 1 :(得分:0)

我通过将验证作为属性本身来实现,并使用控制器的init init方法对其进行初始化。

var Controller = Em.Controller.extend( 

{

  validations: null,

  init:function(){

  this._super();

  if(somecondition){

  this.set('validations',{...});

  }
  else{

   this.set('validations',{...});

  }

  },

 ..

 }