Ember - 帮助程序中的类绑定问题

时间:2015-05-14 09:09:12

标签: ember.js ember-cli ember-validations

我们升级到Ember 1.11.1和Ember-validations 2.0.0-alpha.3。

控制器

export default Ember.Controller.extend(EmberValidations.Mixin, { 
  canValidate: true,
  validationModel: Ember.computed.alias("model"),
  validations: {
   'validationModel.name': {
      presence: { 'if': 'canValidate', message: 'Please enter a name'},
   },
  },
}

模板

{{log "error value" errors.validationModel.name}}
{{input classBinding="errors.validationModel.name:app_input_box_error:app_input_box" placeholder="Document Name" value=model.name}}

使用上面的模板代码,验证按预期工作,并根据是否存在验证错误来扩展输入的类。但是,当删除{{log}}行时,类绑定似乎丢失,输入类不再适当更新。有关原因/修复的任何建议吗?

注意帮助者之外的类绑定,例如在标准div中继续正常工作

2 个答案:

答案 0 :(得分:1)

也许试试这个:

{{input classBinding="errors.validationModel.name:app_input_box_error:app_input_box" placeholder="Document Name" value=validationModel.name}}

答案 1 :(得分:0)

我没有在文档中看到classBindingclassNameBindings,我不确定某些内容是否已被弃用。

我怀疑classBinding没有触发要更新的属性,我似乎回想起有关此问题的一些问题,有时候并不总是触发ember-validations。请查看https://github.com/aceofspades/ember-validations/commit/85ecaa348f2a1ccfb52f614037c4b4dbf77bceb4,看看这是否有帮助。

从更高层次来看,我认为你经常重复这种模式,根据与特定领域的错误关系添加一个类名。就个人而言,我可能会花一些时间寻找或构建一个处理ember-validations注释的输入组件,您可以在其中拥有fieldName属性并让它查看相应的errors.validation.${fieldName}。 JS中的编码可能有助于或至少使调试更容易。

This与单个字段并不完全相关,但也可能对您有所帮助,特别是转向HTMLBars语法,即

{{input class="{{if errors.validationModel.name 'app_input_box_error' 'app_input_box'}}"}}