1

事前入力された 2 つのフィールドを含むモデルがあるとします。これらのフィールドを DOM に表示して、ユーザーが必要に応じて変更できるようにしたいと考えています。{{input value=field1}} と {{input value=field2}} を使用して DOM をモデルにバインドすると、ユーザーがこれらのフィールドのいずれかに文字を入力するたびに、Ember はバインドされたモデルをすぐに更新します。これは私が望む動作ではありません。ボタンを表示することを好みます。押されたら、2 つのフィールドのデータを相互に検証し、有効な場合はモデルを更新します。

コントローラーにミラーリングされたフィールドを作成し、これらを DOM にバインドすることを検討しました。次に、ボタンに関連付けられたアクションを作成して検証を行い、データが有効であることが判明した場合は、コントローラー フィールドからそれぞれのモデル フィールドにデータをコピーします。この手法はうまくいくかもしれませんが、概念的に単純なことを行うための非常に回りくどい方法のように思えます。

Ember の専門家の 1 人が、これを行う最善の方法について意見を持っていますか? ベスト プラクティスを探しています。助けてください。

4

1 に答える 1

1

私たちのアプリはサーバー側の検証を使用しているため、私は専門家ではなく、EmberData のクライアント側の検証に精通していません。

  1. モデルをすぐに更新 (つまり、テンプレート フィールドにバインド) できないようにしますか?

    モデルをバインドした場合は、送信時に検証できます。検証が失敗した場合は、変更のみを行うことができrollbackます。合格すればsave、記録できます。これはおそらく私がすることです。

  2. ただし、モデルをすぐに更新したくないことを明確に述べています。つまり、モデルをバインドしたくないということです。

    また、検証するために複数のフィールドに依存する処理を行う必要があるため、コントローラーにバインドして検証アクションを実行することは良い解決策のように思えます。

于 2013-10-26T20:34:40.960 に答える