我有一个简单的 knockout 模板,但因为它位于使用 knockout 的现有页面中,所以我的模板无法正常工作。我没有在页面上看到你好。任何建议都适用!谢谢,
代码片段
<script type="text/html" id="childtag-template">
<ul data-bind="template: { name: 'tag-template'}"></ul>
<div data-bind="template: { name: 'keyword-template'}"></div> <!-- new bit -->
</script>
模板
<script type="text/html" id="keyword-template">
hello
</script>
在页面的文档就绪事件中存在以下内容
页面加载中
<script type="text/javascript">
$(function () {
window.helper.Start(@Html.Raw(Json.Encode(Model)););
});
开始内容如下
启动方式
window.Helper= {
Start: function (x) {
var viewModel = Helper.XViewModel(x);
window.Helper.ViewModel = viewModel;
ko.applyBindings(viewModel);
...
当我可以成功加载模板时,我只需要一个直接从 knockout 示例中获取的简单表格,该表格允许添加和删除列表。我有这个独立工作但是当将标记和 js 放入现有文件时我得到 js 错误。
更新
我添加了以下更改(请参阅 viewModel.Keywords)。 Firefox 没有报告任何错误,但我没有在页面上看到我的问候语。
window.Helper = {
Start: function (x) {
var viewModel = Helper.XViewModel(x);
window.ArticleManagerHelper.ViewModel = viewModel;
ko.applyBindings(viewModel);
viewModel.Keywords = ko.observable(); // new line of code
我已经在模板中添加了以下内容
<input type="text" data-bind="value: Keywords"/>
最佳答案
好的,这是我为让它工作所做的。
请注意,我使用了 json 的简化版本,因此我可以创建一个有效的 jsFiddle,但概念仍然相同。
<!--html -->
<div data-bind="template: { name: 'keyword-template', data: Article }"></div>
<!-- template -->
<script type="text/html" id="keyword-template">
<input type="text" data-bind="value: Keywords"/>
</script>
- 您在模板中定义了这两个部分,您需要将 html 中的绑定(bind)部分放在模板之外。除非我弄错了,它是某种嵌套模板并且缺少外部 html,否则很抱歉。
- 我需要指定要绑定(bind)的数据,即
data: Article
这是 jsFiddle 的链接:
关于c# - 无法在现有页面中使用挖空模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20525317/