假设我有一个带有播放组件的独立插件:
{{my-record play="recordPlay" stop="recordStop"}}
/app/components/my-record.js
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
play: function() {
this.sendAction('play');
},
stop: function() {
this.sendAction('stop');
}
}
});
我希望插件与后端独立工作并在内部处理所有操作。如何从插件本身处理这两个操作recordPlay
,recordStop
以便我不需要触摸使用应用程序的控制器/路由?
我努力了:
在插件中创建应用程序控制器,例如。`/app/controllers/application.js - 这永远不会被调用
在插件中创建应用程序路由,例如。`/app/routes/application.js - 除非使用应用程序有自己的 ApplicationRoute 覆盖插件的路由,否则会调用它
我可以在插件中以某种方式使用初始化程序将这两个操作注入 ApplicationController 吗?
编辑:使用 ApplicationRoute._actions 的肮脏解决方法
/app/initializers/record.js
export default {
name: 'record',
initialize: function(container, app) {
var applicationRoute = container.lookup('route:application');
applicationRoute._actions.recordPlay = function(id) {
console.log('CALLED recordPlay', id);
};
applicationRoute._actions.recordStop = function(id) {
console.log('CALLED recordStop', id);
};
}
};