敲除对文本片段的绑定

时间:2013-06-10 07:46:38

标签: templates knockout.js

将绑定应用于文本片段的最佳方法是什么?

我使用以下代码来传递ip:

var textFragment = '<div><p data-bind="text: text"></p></div>',
    htmlTemplate = ko.utils.parseHtmlFragment(textFragment);

ko.applyBindings({
    text: "text"
}, htmlTemplate[0]);

alert(htmlTemplate[0].innerHTML);
document.getElementById("test").innerHTML = htmlTemplate[0].innerHTML;

Fiddler

创建一个dom节点并对其应用abinding,然后将其插入到页面中。我看了抛出淘汰代码并看到,有几个函数用于渲染模板,我想知道这些方法是否会更好。我试图使用它们,但结果代码更长,并没有按预期工作。

此致 斯蒂芬

(不是:这只是一个演示我问题的简单演示,我在自定义绑定处理程序中使用它。)

1 个答案:

答案 0 :(得分:1)

听起来想要覆盖默认的源引擎。

//string template source engine
var stringTemplateSource = function (template) {
    this.template = template;
};

stringTemplateSource.prototype.text = function () {
    return this.template;
};

var stringTemplateEngine = new ko.nativeTemplateEngine();
stringTemplateEngine.makeTemplateSource = function (template) {
    return new stringTemplateSource(template);
};

然后您可以将其用作默认引擎,如

ko.setTemplateEngine(stringTemplateEngine);

或者将其用于自定义绑定中的特定模板,例如

var myTemplate = '<div><p data-bind="text: text"></p></div>';
ko.renderTemplate(myTemplate, bindingContext.createChildContext(valueAccessor()), { templateEngine: stringTemplateEngine }, element, "replaceChildren");