通常、ハンドルバーアクション ヘルパーは、.html 要素ではなく HTML 要素で使用しますEmber.View
。
NewApp.MenuButton ビューにイベントをアタッチしたいので、ビュー クラス定義でイベントを定義します。たとえば、ここでclick
イベントを処理します。
NewApp.MenuButton = Ember.View.extend({
click: function(event){
// When the user clicks this view,
// this function will be called.
// ... handle the click
App.myController.menuButtonWasClicked();
}
});
添付したいイベントが組み込みイベントでない場合は、独自のイベントを登録できます。サポートされている組み込みのイベントとカスタム イベントの登録方法については、Ember.js - Eventsを参照してください。
編集:あなたはそれを再利用できるようにしたいと言っています。任意のイベントをアタッチし、任意のオブジェクトをターゲットにするための mixin を定義できます。
Ember.MyEventAttacher = Ember.Mixin.create({
init: function() {
var action = this.get('action');
target = this.get('target'),
targetObj = Ember.getPath(target);
if (action && targetObj) {
var targetEventFnc = targetObj[action];
if (typeof targetEventFnc === 'function') {
var actionFnc = function(event) {
targetEventFnc(event);
}
this.set(action, actionFnc);
}
this._super();
}
});
ビューに Mixin を含めます。
NewApp.MenuButton = Ember.View.extend(Ember.MyEventAttacher);
そして、テンプレートでこのビューを再利用し、action
およびtarget
プロパティを確実に定義します。例:
{{#view NewApp.MenuButton action="show3" target="NewApp.myController"}}
<!-- ... -->
{{/view}}
ターゲティング:
NewApp.myController = Ember.Controller.create({
show3: function(event) {
// the event is sent here!
}
});