使用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库无法按预期工作。我该如何缓解这种情况?
答案 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',{...});
}
},
..
}