1

私のビューの初期化では、次のようにリッスンするイベントをセットアップしました。

 Ember.Instrumentation.subscribe("inlineEdit.makeBlue", {
    before: function (name, timestamp, payload) {
       alert(name, timestamp,payload);
    },
    after: function () {

    }
  });

ハンドルバーから、アクションでイベントをトリガーしたいと思います:

<a {{action inlineEdit.makeBlue on="mouseDown"}} class="btn ">Blue</a>

残念ながら、これは上記のイベント リスナーをトリガーしません。計装イベントをハンドルバーからトリガーできますか? はいの場合、どのように?

4

1 に答える 1

4

現時点では、ember コアでは利用できませんが、実装することは可能です。

アクションを内部的に使用すると、ember はEmber.ActionHandler#sendメソッドを使用してこれらのイベントをディスパッチします。したがって、そのクラスを再度開き、メソッドをプロキシして、呼び出しを次のようにラップできますEmber.instrument

Ember.ActionHandler.reopen({
    send: function(actionName) {
        var orininalArguments = arguments, 
            args = [].slice.call(arguments, 1), 
            result;        
        Ember.instrument('action.' + actionName, args, function() {            
            result = this._super.apply(this, orininalArguments);
        }, this);        
        return result;
    }
});

だからあなたは購読することができます:

// Specific action
Ember.Instrumentation.subscribe("action.inlineEdit.makeBlue", { ... })

actionサブスクリプションにプレフィックスを追加したので、インストルメンテーション API を利用して、すべてのアクション イベントをリッスンできます。

// All actions
Ember.Instrumentation.subscribe("action", { ... })

そのフィドルを見て、これが機能していることを確認してくださいhttp://jsfiddle.net/marciojunior/8P46f/

役立つことを願っています

于 2013-11-13T12:11:39.603 に答える