加载页面后使用jQuery呈现淘汰模板

加载页面后使用jQuery呈现淘汰模板,jquery,jquery-plugins,knockout.js,knockout-templating,Jquery,Jquery Plugins,Knockout.js,Knockout Templating,我正在构建一个knockout\jQuery插件,在调用时创建自己的UI,如下所示: <input type="text" name="filter" id="filter" /> // renders ui $("#filter").myPlugin(); 我还在这里创建了一个问题的JS小提琴: 基本上,我想知道我是否需要在这里采取另一种方法,或者是否有一种方法可以“解析”dom以刷新模板的淘汰知识 提前谢谢 您可以覆盖模板源引擎。您可以替代默认模板源,也可以编写自定义模板绑定

我正在构建一个knockout\jQuery插件,在调用时创建自己的UI,如下所示:

<input type="text" name="filter" id="filter" />

// renders ui
$("#filter").myPlugin();
我还在这里创建了一个问题的JS小提琴:

基本上,我想知道我是否需要在这里采取另一种方法,或者是否有一种方法可以“解析”dom以刷新模板的淘汰知识


提前谢谢

您可以覆盖模板源引擎。您可以替代默认模板源,也可以编写自定义模板绑定并仅替代该绑定的模板源

要设置默认模板引擎,您可以签出我所做的这个插件

要从自定义模板绑定覆盖模板源,可以执行以下操作

ko.renderTemplate(template, bindingContext.createChildContext(data), engine /* reference your template engine */, element, "replaceChildren");

我想我明白了。。。所以你是说一个潜在的解决方案是提供一个可指定为字符串的替代模板源?是的,在我写的这个插件中可以找到一个非常基本的字符串模板源,非常感谢您的输入。。。我实际上需要使用ko.renderTemplateForEach(),但这似乎不接受引擎作为参数,这是您遇到的问题吗?忽略最后的评论,在进一步查看源代码之后,我发现我们可以将模板引擎附加到选项上。我正要回答:DYou当然可以使用另一种加载模板的方法,但我只想指出,对于原始问题,这实际上与设置
脚本
元素内容的方式有关。您需要使用
text
将内容设置为:。错误不是因为它找不到模板,而是因为它认为模板没有内容。希望能有帮助。啊,太棒了,谢谢瑞安。看来另一条线最后有点过分了!不过,至少在模板引擎的工作过程中,这是一次有趣的冒险。
var fieldstemplate = $('<script>', { type: "text/html", id:"fieldsTemplate" });
var row = $('<ol>').html("<li>row</li>").appendTo(fieldstemplate);

fieldstemplate.insertAfter($("#container"));

var model = { FilterRows: ko.observable(["row"]) };
ko.applyBindings(model);
Uncaught TypeError: Cannot read property 'length' of null knockout-2.2.1.js:8
ko.renderTemplate(template, bindingContext.createChildContext(data), engine /* reference your template engine */, element, "replaceChildren");