emberjs - 动态计算 属性 不会触发 classNameBindings

emberjs - dynamic computed property does not trigger classNameBindings

我正在创建一个 mixin 来验证带有 texFields 的组件,它看起来像这样,我正在使用 Ember.defineProperty 动态创建一个带有动态依赖键的 cp:

App.ValidationMixin = Ember.Mixin.create
  classNameBindings: ['isInvalid']

  input: (e) ->
    @_super.apply this, arguments

  setup: Ember.on 'didInsertElement', ->
    unless validations = @get('validations')

    el = @autocompleteElement()

    # I had to add this to access the prop rather than it getting
    # triggered when the dynamic property changes
    if @get('isInvalid')
      el.addClass 'is-invalid'
    else
      el.removeClass 'is-invalid'

  validationMixin: Ember.on 'didInsertElement', ->
    unless validations = @get('validations')
      return

    dynamicProperty = # logic to determine dynamic property

    Ember.defineProperty this, 'isInvalid', Ember.computed dynamicProperty, 'validator.isSubmitted', ->
      # validation logic

问题是,我必须手动检查 this.get('isInvalid') 而不是 属性 当相关键之一发生变化时正在执行的函数。

谁能解释这是为什么?

Ember 可能认为 属性 'isInvalid' 没有在任何地方使用,因此不会更新它。我猜 'didInsertElement' 在 classNameBindings 属性 之后被调用...尝试在模板中输出 'isInvalid' 属性 以检查是否是这种情况,因为因此必须更新它.