0

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()ブランチ内では、オブジェクトが表示されます。ここに制御フローがありませんか?

4

2 に答える 2

0

わかりました、解決しました。

独自の init メソッドをオーバーライドし、いくつかのコードを実行してから、super()コンストラクターを呼び出す mixin でinitメソッドを定義できます。

init: ->
  ...
  @_super()
于 2016-01-15T08:18:42.760 に答える