2015-10-29 15 views
9

Tôi cố gắng để cụ this.send() trong Ember, bằng cách gắn vào ActionHandler#send như sau:Ember: hooking vào ActionHandler # gửi

Ember.ActionHandler.reopen({ 
    send() { console.log("hooked"); this._super(...arguments); } 
} 

Khi tôi gọi đây là từ app.js, khi ứng dụng được khởi động, nó hoạt động. Khi tôi gọi nó từ một bộ khởi tạo, nó không. Khi tôi gọi nó sau khi ứng dụng khởi động, chẳng hạn như từ bộ điều khiển ứng dụng, nó cũng không hoạt động. Trong cả hai trường hợp nó không hoạt động, nếu tôi theo dõi một cuộc gọi this.send(), nó sẽ đi trực tiếp vào việc thực hiện ban đầu của send.

Tôi nghi ngờ điều này có liên quan đến cách mixin được sử dụng khi khởi tạo đối tượng, nhưng nếu không tôi sẽ bị bối rối.

+0

Vì vậy, bạn muốn gì? Bạn muốn điều này để làm việc khi hooking trong initializer? –

Trả lời

3

Nó không làm việc khi sử dụng initializer:

initializers/hành động hook.js

import Ember from 'ember'; 

export function initialize() { 
    Ember.ActionHandler.reopen({ 
    send() { 
     console.log("hooked"); 
     this._super(...arguments); 
    } 
    }); 
} 

export default { 
    name: 'action-hook', 
    initialize: initialize 
}; 

Tested trong điều khiển ứng dụng.

controllers/application.js

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    afterInit: Ember.on('init', function() { 
    Ember.run.next(() => { 
     console.log('Send action.'); 
     this.send('exampleAction'); 
    }); 
    }), 
    actions: { 
    exampleAction() { 
     console.log('exampleAction handled'); 
    } 
    } 
}); 

Nó ra:

Gửi hành động.

nối

exampleAction xử lý

Working demofull code behind it.

Các vấn đề liên quan