0

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

我用下面的代码来了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;

提琴手

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

问候,斯特凡

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

4

1 回答 1

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");
于 2013-06-10T12:01:10.537 回答