4

私が書いたEmber.jsフォームヘルパーのセットの一部であるボタンビューがあります。たとえば、MyAddressFormViewには次のテンプレートがあります。

{{#form}}
  {{textArea address}}
  {{submitButton}}
  {{cancelButton}}
{{/form}}

「送信」ボタンを処理するために、「送信」フォームイベントバブルを作成し、submitMyAddressFormViewのメソッドで処理します。

しかし、「キャンセル」ボタンについて同じことをするにはどうすればよいですか?たとえば、子ビューでカスタムの「キャンセルフォーム」イベントをトリガーし、それをバブルさせて、祖先ビューで処理する方法はありますか?

4

2 に答える 2

4

jQueryの特別なイベントをトリガーし、Emberアプリのマッピングにイベントを登録することをお勧めします。例えば:

Ember.Application.create({
  customEvents: {
    // key is the jquery event, value is the name used in views
    formcancel: 'formCancel'
  }
});

そしてcancelButtonビューで:

click: function(evt){
  Ember.$().trigger('formcancel')
}

これは、他のマップされたEmberDOMイベントと同じようにバブルします。

于 2012-11-27T06:17:10.747 に答える
0

Ember.ActionHandlerは、その「ターゲット」プロパティを介してイベントをバブルします。Ember.Viewのターゲットをオーバーライドして、デフォルトでイベントがparentViewを介してバブルするようにすることができます。

最初にこのミックスインを含めます。

(function() {
    Ember.View.reopen({
        // Let actions bubble to parentView by default.
        target: function() {
            return this.get('parentView');
        }.property('parentView')
    });
})();

次に、通常どおりにイベントを送信します。

tap: function() { this.send('someEvent'); }
于 2013-09-12T17:52:18.340 に答える