我试图使用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')可以正常工作,但是如果我想在组件初始化时设置validations对象,其中包含一些作为参数传递给组件的任意验证,比如setupFlags
setupFlags: (->
@setProperties(
...
@set 'validations', Ember.copy ( { value: { numericality: true }}))
).on('init')不起作用。它总是打印“好”,无论输入。如果我能
console.log (@get 'validations')然而,在@validate方法的()分支中,它显示了对象。我是不是错过了控制流程?
发布于 2016-01-13 12:32:17
好吧,我已经知道答案了,但我不知道如何克服它。如果有人发现了,我就把它放在这里。
添加到组件中的EmberValidations.Mixin包含一个init方法,该方法将检查是否定义了任何validations对象,并将向其每个属性添加一个观察者。该代码是在组件的init函数之前运行的,因此,当在组件中修改validations对象时,已经在之前遇到的值上设置了观察者。
发布于 2016-01-15 08:18:42
好了解决了。
您可以在can中定义一个 init 方法,该方法将覆盖它自己的init方法,运行一些代码,然后调用超级()构造函数。
init: ->
...
@_super()https://stackoverflow.com/questions/34766609
复制相似问题