Ember - проблема с привязкой класса внутри помощника
Мы обновились до 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 ответа
Может быть, попробуйте это:
{{input classBinding="errors.validationModel.name:app_input_box_error:app_input_box" placeholder="Document Name" value=validationModel.name}}
Я не вижу classBinding
но classNameBindings
в документах я не уверен, что что-то не понравилось на этом пути.
Я подозреваю, что classBinding
не вызывает обновление свойства, я, кажется, напомнил некоторые проблемы с этим при проверке ember в какой-то момент не всегда срабатывает. Загляните на https://github.com/aceofspades/ember-validations/commit/85ecaa348f2a1ccfb52f614037c4b4dbf77bceb4 и посмотрите, может ли это помочь.
С более высокого уровня, я думаю, вы будете часто повторять этот шаблон, добавляя имя класса на основе ошибок, связанных с конкретным полем. Лично я мог бы потратить некоторое время на поиск или создание компонента ввода, который обрабатывает аннотацию для проверки на угли, где вы можете иметь fieldName
собственности и посмотреть на соответствующие errors.validation.${fieldName}
, Кодирование в JS может помочь или, по крайней мере, упростить отладку.
Это не совсем точно связано с отдельными полями, но может также помочь вам, в частности, перейти к синтаксису HTMLBars, т.е.
{{input class="{{if errors.validationModel.name 'app_input_box_error' 'app_input_box'}}"}}