我正在使用texField创建一个mixin来验证组件,我使用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')
,而不是在其中一个相关键发生变化时执行的属性函数。
任何人都可以解释为什么会这样吗?
答案 0 :(得分:1)
Ember可能认为属性'isInvalid'未在任何地方使用,因此不会更新它。我想在classNameBindings属性之后调用'didInsertElement'...尝试在模板中输出'isInvalid'属性以检查是否是这种情况,因为它必须更新。