Ember.js 如何扩展 ember-cli-addon 组件

Ember.js how to extend ember-cli-addon component

我在我的 Ember 应用程序中使用 Stripe,我已按照此处的说明进行设置: https://github.com/sweettooth/ember-cli-stripe

所以我的应用现在就在,通过这个插件安装的 ember-checkout 组件在

myappname/node_modules/ember-cli-stripe/app/components/stripe-checkout

现在,我想创建一个新组件 "my-stripe-checkout",并让它扩展默认的 ember-cli-stripe 组件。

我试过:

import StripeCheckoutComponent from '../node_modules/ember-cli-stripe/app/components/stripe-checkout';
import StripeCheckoutComponent from 'ember-cli-stripe/app/components/stripe-checkout';
import StripeCheckoutComponent from 'app/components/stripe-checkout';

在我通过 Ember g 生成的 my-stripe-checkout 组件中,但无济于事。

我总是收到这种模式的错误:

Could not find module `app/components/stripe-checkout` imported from `myappname/components/my-stripe-checkout`

根据这个问题:

我试过

import StripeCheckoutComponent from 'ember-cli-stripe/components/stripe-checkout';

但同样的错误。

我也都试过了:

export default Ember.StripeCheckoutComponent.extend({ })

export default StripeCheckoutComponent.extend({})

导入的每次迭代,但似乎没有任何效果。如何扩展 ember-cli-addon 组件?

嗯,你需要明白,插件的 app 目录直接合并到你的应用程序结构中。最好的做法是将所有代码都保存在 addon 目录中,但是 ember-cli-stripe 并没有这样做。所以从你的 components 目录里面你基本上可以做

import StripeCheckoutComponent from './stripe-checkout';

import StripeCheckoutComponent from 'YourAppName/components/stripe-checkout';

如果组件位于插件的 addon 目录中,正确的方法是:

import StripeCheckoutComponent from 'ember-cli-stripe/components/stripe-checkout';