【发布时间】:2020-12-05 19:46:51
【问题描述】:
我正在尝试了解组件驱动的开发是如何工作的,并且我已经关注https://knockoutjs.com/documentation/component-custom-elements.html 此处的文档(包括与此主题相关的许多嵌套链接)但是,尽管 TS/JS 文件加载无误,但 HTML 组件永远不会渲染。
在这里您可以看到 RequireJS 正确加载了 typescript:
Login-User typescript loaded in browser
这是网页中的 HTML 组件:
这是 HTML“模板”中的内容:
<div class="panel">
<label>Username:</label>
<input type="text" data-bind="Value: $component.Username()" />
<br />
<label>Password:</label>
<input type="text" data-bind="Value: $component.Password()" />
<br />
<label>Valid:</label>
<input type="text" data-bind="Value: $component.ValidUser()" />
</div>
这里是HTML模板的注册:
const componentName = "Login-User";
ko.components.unregister(componentName);
ko.components.register(componentName, {
viewModel: LoginViewModel,
template: { require: `text!/Views/Components/${componentName}.html` }
});
我在控制台中没有收到任何错误,但在将断点添加到调试时从未命中 TS 文件中的构造函数,这表明我根本没有尝试实际呈现 HTML 组件?
我已检查所有文件路径是否正确并删除并重新编译 TS 文件以生成 JS 文件以确保一切都是最新的,我假设我没有以某种方式正确配置 require,因此 HTML 组件永远不会实际注册但是由于没有记录错误,我对下一步去哪里有点卡住了!正如我之前所说,我已经阅读了关于 Knockout 和 RequireJS 的文档,但是在实现 HTML 组件时搜索谷歌的问题时,我似乎只能得到 Angular 的结果。
任何关于如何确定问题的建议将不胜感激,如果有任何关于如何一起使用 Knockout/Require/Typescript/HTML 组件的文档/指南,有人可以指出我会很棒!
我想我已经提供了所需的一切,但如果没有,请告诉我。
谢谢, 丹尼
【问题讨论】:
标签: html typescript knockout.js components requirejs