2013-12-18 81 views
1

我正在使用dockyard/ember-validation来验证控制器属性,但是我没有能够按预期工作。所以我基本上对复选框有切换效果,并且我定义了2个验证规则,当用户在复选框之间切换时,只有其中一个应该执行/验证。 我的验证规则被定义为:如果条件不能按预期工作,则验证余烬

validations: { 

      "instructions": { 
       format: { 
        if: 'inlineSource', 
        'with': /^(?!\s*$).+/ 
       } 
      }, 
      "externalSourceValue": { 
       format: { 
        if: 'externalSource', 
        'with': /^(?!\s*$).+/ 
       } 
      } 
     } 

这里无论是inlineSource是真的还是externalSource是真实的,但两者决不会同时如此。我预计只有一个验证规则会被执行,但似乎两者都在运行,不考虑那里的条件。

这里是jsbin的问题:http://jsbin.com/ODAmukOM/1/

遵循以下步骤: 1)点击外部网站 2)设置的输入字段值空 3)点击内容我指定 4)验证设置控制器无效状态

感谢, 迪

回答

0

要添加2次格式的验证,

指令是有效的,如果inlineSource& &/^(?!\s*$).+/

真的是你的逻辑需要更多像这样的

"instructions": { 
    format: { 
     if: function(object, validator) { 
     console.log('inlineSource',object); 
     if(!object.get('inlineSource')){ 
      return (object.get('instruction') || '').match(/^(?!\s*$).+/); 
     } 
     return true; 
     } 
    } 
} 

不幸的是,当您更改属性验证只运行,所以你改变instruction验证运行,这是无效的,你然后切换(翻转inlineSource),但验证不会再发生。此时您需要手动运行验证以再次检查验证。祝你好运

+0

我手动运行验证disableSave函数,它观察inlineSource和externalSource。但我仍然无法让它工作! –