RC1 の下で Ember フォームからの更新を適切に入力して受け入れる方法を理解するのに苦労しています。この jsfiddleで必要最小限にまで煮詰めました。特定のエンティティ (姓と名を持つユーザー) のフォームを表示するのに十分な距離があり、現在の値がフィールドに入力されます。ただし、ユーザーが入力すると、キーストロークごとにフィールドが実際に更新され、[戻る] ボタンをクリックすると、[更新] ボタンをクリックしなくてもデータが既に変更されていることがわかります。更新の間にいくつかのロジックを保持し、ユーザーが更新ボタンをクリックした後にのみ更新を確認したいと思います。
{{#view App.PersonFormView}}
First name: {{view Ember.TextField valueBinding="firstName"}}
Last name: {{view Ember.TextField valueBinding="lastName"}}
<button {{action "updatePerson"}}>Update</button>
{{/view}}
フォーム テンプレートで、Ember.js の例の 1 つに従おうとしましたが、そうすると長い遅延が発生し、RC1 を使用すると恐ろしい非推奨の警告が表示されました。例はまだ更新されていると思います。フォームが存在する場合は、よりエレガントな方法でフォームをコーディングすることをお勧めします。
2 つ目の問題は、フォーム ビューまたはコントローラーのいずれかで送信イベント自体をキャプチャできないことです。このイベントの行方はわかりません。
App.PersonFormController = Ember.ObjectController.extend({
updatePerson: function(params){
// this doesn't get triggered as I would have expected
console.log('controller updatePerson: '+params);
}
});
App.PersonFormView = Ember.View.extend({
tagName: 'form',
updatePerson: function(params){
// this doesn't get triggered either!
console.log('updatePerson params: '+params);
}
});
要約すると、次のことが必要です。
- ユーザーが入力している間にモデルのデータに直接リンクすることなく、入力フィールドに値を入力します
- 送信ボタン (または他のコントロールでも問題ありません) のクリック イベントとフィールド (およびエンティティの ID) をキャッチして、手動でモデルのデータに戻すことができるようにします。