1

我们升级到 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 中继续正常工作

4

2 回答 2

1

也许试试这个:

{{input classBinding="errors.validationModel.name:app_input_box_error:app_input_box" placeholder="Document Name" value=validationModel.name}}
于 2015-05-14T10:13:05.877 回答
0

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

我怀疑这classBinding不会触发要更新的属性,我似乎记得在 ember-validations 上的一些问题并不总是触发。看看https://github.com/aceofspades/ember-validations/commit/85ecaa348f2a1ccfb52f614037c4b4dbf77bceb4看看是否有帮助。

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

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

{{input class="{{if errors.validationModel.name 'app_input_box_error' 'app_input_box'}}"}}
于 2015-05-19T21:19:59.640 回答