尝试将 ViewSlot
注入基于骨架的esnext项目,浏览器中会显示以下错误。我刚刚使用基于 systemjs
的 CLI 创建了一个简单的项目,我看到了同样的事情。
vendor-bundle.js:1398 Unhandled rejection Error: Error invoking ViewSlot. Check the inner error for details.
Inner Error:
Message: Cannot set property ‘viewSlot’ of undefined``
从修改后的CLI生成的应用程序中,这再现了我在真实应用程序中看到的同样问题
import { BoundViewFactory, ViewSlot, customAttribute, templateController, inject } from 'aurelia-framework';
@inject(ViewSlot)
export class App {
constructor(viewSlot) {
this.message = 'Hello World!';
this.viewSlot = viewSlot;
}
}
答案 0 :(得分:1)
我认为问题在于ViewSlot应该与自定义元素一起使用,而不是与页面一起使用。将ViewSlot注入自定义元素时没有任何问题,但是当我尝试在页面组件上使用它时,它每次都失败。
问题是ViewSlot
实例需要将锚节点传递给它,但页面没有锚节点。 Aurelia为undefined
属性传递anchor
,然后ViewSlot
尝试设置未定义值的viewSlot
属性,但失败。