如果有的话,我们如何从插件中公开view/view-model component?例如,我们有以下内容:
// ./open-id/foo-bar.html
<template>
<p>FooBar</p>
</template>
// ./open-id/foo-bar.ts
export class FooBar { }
在消费应用程序中,我们希望这样做:
// ./app.html
<require from="open-id/foo-bar"></require>
<foo-bar></foo-bar>
根据Robinson Collado的回答,我们使用更简单的名称(foo
而非foo-bar
)来降低复杂性。
// ./open-id/foo.html
<template>
<p>Foo</p>
</template>
// ./open-id/foo.ts
export class Foo { }
// ./app.html
<require from="open-id/foo"></require>
<foo></foo>
这种方法引发了这个错误:
未处理的拒绝错误:模块的加载超时:template-registry-entry!open-id / foo.html,text!open-id / foo.html
根据Installing Plugins文档,我们尝试将组件添加为全局资源。
// ./open-id/open-id.ts
function configure(config: FrameworkConfiguration) {
config.globalResources('./foo');
}
这种方法引发了这个错误:
这意味着Aurelia正在寻找open-id/open-id/
中的组件,这个目录太深了。
在开发插件的过程中,我们正在加载这样的插件,这可能就是为什么Aurelia看起来太深了。在开发过程中,我们如何以不同方式加载插件?
// ./main.ts
aurelia.use.plugin("./open-id/open-id");
aurelia.use.feature("./aurelia-open-id-connect");
对于从我们的功能接收注入的每个构造函数,现在出现错误。
消息:键/值不能为null或未定义。您是否尝试注入/注册DI不存在的东西?
答案 0 :(得分:1)
尝试将自定义标记<foo-bar></foo-bar>
的名称更改为<foobar></foobar>
。标记的名称应与其视图模型类的名称相匹配。除非,如果使用@customElement装饰器显式声明自定义元素的标记名称。