Javascript 如何覆盖Ember插件中的默认功能

Javascript 如何覆盖Ember插件中的默认功能,javascript,ember.js,ember-cli,ember-cli-addons,ember-addon,Javascript,Ember.js,Ember Cli,Ember Cli Addons,Ember Addon,在ember cli文档中,它描述了通过自己重写app/component/[addon name.js]来桥接主机应用程序中的加载项。但是,文档没有明确说明如何执行此操作 通过尝试和错误,我注意到,通过在[host app]/app/component/[name of addon.js]中创建一个组件文件,并简单地将插件代码复制/粘贴到其中,可以定制插件。然而,这是一种糟糕的方法,我可以想象我可以简单地重写有问题的函数……在某些情况下,调用这个.super().functionName,以保

在ember cli文档中,它描述了通过自己重写app/component/[addon name.js]来桥接主机应用程序中的加载项。但是,文档没有明确说明如何执行此操作

通过尝试和错误,我注意到,通过在[host app]/app/component/[name of addon.js]中创建一个组件文件,并简单地将插件代码复制/粘贴到其中,可以定制插件。然而,这是一种糟糕的方法,我可以想象我可以简单地重写有问题的函数……在某些情况下,调用这个.super().functionName,以保持覆盖的简单和整洁


然而,我不能让它工作。有什么想法吗

可扩展性是插件同时具有
addon/
app/
树的原因。在组件的
app
树中,该组件应该只是一个导入和导出组件,例如:

import XSelect from 'emberx-select/components/x-select';
export default XSelect;
资料来源:

在这种情况下,您希望在
[host app]/app/component/[name of addons component.js]
中创建组件,然后在该组件中执行以下操作:

import XSelect from 'emberx-select/components/x-select';

export default XSelect.extend({
  //any overrides
});

谢谢凯特,这正是我想要做的;然而,我得到了我没有预料到的结果。我正在尝试扩展包含在余烬添加余烬选择中的selectize。在我的应用程序中,我创建了/component/ember selectize/component.js,非常棒;但是,如果我只更新了一个需要重写的函数,那么该组件似乎不起作用。不幸的是,我只能通过复制/粘贴所有内容来实现这一点。此外,在didInsertElement覆盖中,我希望在其中包含这个.super(),以便在主体中只包含一行代码来自定义组件。相反,这会抛出一个错误,不起作用。凯特-谢谢你的耐心。我已经创建了一个repo,在这里我使用ember cli selectize并在本地覆盖它,希望只覆盖底层模板呈现…但是,当我开始删除其他支持函数时,它会停止工作。此外,在我覆盖的函数中,我可以执行this.\u super()来执行默认行为。实际上,我写这些行是为了覆盖默认行为。对不起,我指的是你尝试过的不起作用的代码,不是你必须做什么才能使它起作用。