2

jsfiddle からember.js用の Boronine の優れたフィールド検証コードを統合しました。これは素晴らしいことですが、ユーザーがフォームを送信したときにすべて問題がないことを確認するために、フォーム レベルの検証を実行する必要があります。

それを行う最善の方法は何ですか?フィールドを検証済みとしてマークし、フォーム ハンドラーが単純にフィールドを移動して検証済みかどうかを確認できるようにする方法はありますか?

MP.SignUpFormView = Em.View.extend({
    submitLogin:function (event) {
        // walk through object fields to perform validation here, but how?!
    }
});

編集:

わかりやすくするために、DOM オブジェクトなどを歩こうとせずに、Handlebars とバインディングを使用しています

4

1 に答える 1

5

使用しようとしているパターンは、ドキュメント スクリプト パターンに従うアプリケーションでは意味がありますが、Ember ではそうではありません。この作業を強制することはできますが、アプリケーションの次の各ステップがますます難しくなることがわかります。

Ember の表示はデータ オブジェクトに支えられているため、Ember アプリケーションのフォーム フィールドはオブジェクトのプロパティにバインドされ、変更が加えられると値がすぐに更新されます。<form>おそらくスタイリングのため以外は、実際には必要ありません。

ユーザーがこのオブジェクトに対して何らかのアクション (サーバーへの永続化など) を実行したい場合、アプリケーションの現在の状態は、「ユーザーがこのアクションを今すぐ実行したい場合はどうなるか?」という質問に答えます。ここでボタンをクリックするユーザーは、「フォーム内のデータをシリアル化して何かを実行する」という意味ではなく、「このオブジェクトのプロパティの変更が完了し、アプリケーションで別の操作を実行したい」という意味になります。

ハンドルバー テンプレートは次のようになります。

{{view Ember.Textfield valueBinding="name"}}
{{view Ember.Textfield valueBinding="age"}}

<button {{action save content}}>Save</button>

そして、これを処理できるアプリケーションの可能な状態

Ember.Route.extend({
  save: function(router, event){
    if (event.context.validate()){
      router.transitionTo('someNewState')
    }
  }
})
于 2012-12-24T04:45:53.047 に答える