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' 属性 以检查是否是这种情况,因为因此必须更新它.
我正在创建一个 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' 属性 以检查是否是这种情况,因为因此必须更新它.