我使用应该是可选的行模板进行自定义绑定.如果用户没有提供模板ID我想使用默认值,但它不存在于body中的script标签中,它只是options literal上的一个字符串.
我如何使用字符串作为模板?
默认模板应该很简单
我已经尝试过ko.renderTemplate,但它只需要id到脚本标签
ko.renderTemplate(template, bindingContext.createChildContext(data), null, row, "replaceChildren");
更新
刚收到有关此问题的通知,并看到有人建议将模板注入dom并使用标准脚本标记提供程序.但是这并没有考虑到用户可以覆盖默认模板源(使用单个plage应用程序的常见方案.我使用这种方式,首先尝试默认模板提供程序,然后回退到字符串模板源,如下所示
var engines: {}
var renderTemplate = function (element, template, data, bindingContext) {
var engine = engines[template];
var success = false;
do {
try {
ko.renderTemplate(template, bindingContext.createChildContext(data), engine, element, "replaceChildren");
success = true;
engines[template] = engine;
} catch(err) {
if (engine != null)
throw "Template engine not found";
engine = { templateEngine: stringTemplateEngine };
}
} while (!success)
};