我正在尝试使用 ember-validations 验证单个组件中的字段,但是可以将验证对象传递给组件,而不是将其内部硬编码。这段代码:
EditDefaultPropertyComponent = Ember.Component.extend EmberValidations.Mixin,
validations:
value:
numericality: true
onValueObserver: Ember.observer('value', ->
@validate()
.then(() =>
...
console.log 'good'
@set 'error', null
)
.catch((err) =>
...
console.log 'bad'
@set 'error', err
)
)
setupFlags: (->
...
).on('init')
工作正常,但如果我想在组件的初始化时间设置验证对象,并将一些任意验证作为参数传递给组件,例如在 setupFlags :
setupFlags: (->
@setProperties(
...
@set 'validations', Ember.copy ( { value: { numericality: true }}))
).on('init')
赢了工作。它将始终打印出好的"无论输入。如果我访问
console.log (@get 'validations')
在 @validate 方法的 then()分支内,但它显示了该对象。 我在这里错过了一些控制流程吗?
答案 0 :(得分:0)
好的,我已经知道了答案,但我不知道如何克服它。如果有人发现它,我会把它放在这里。
添加到组件中的 EmberValidations.Mixin 包含一个 init 方法,该方法将检查是否定义了任何验证对象,并将为每个验证对象添加一个观察者&# 39; s属性。 该代码在组件的init函数之前运行,因此,当在组件中修改验证对象时,观察者已经设置了mixin之前遇到的值。
答案 1 :(得分:0)
好的,解决了。
你可以在mixin中定义一个 init 方法,它将覆盖它自己的init方法,运行一些代码,然后调用 super()构造函数。
init: ->
...
@_super()