我已经开始考虑使用淘汰赛来为我的团队使用;到目前为止,我对这个框架非常满意,除了它与jQuery模板插件的关系外,它的语法我讨厌。另外(更重要的是),我们一直在使用jQote2进行客户端模板化,所以我想研究创建一个使用它的模板引擎。jQote2淘汰赛模板
我对renderTemplate
函数有困难; jQote2库似乎不知道如何找到通过参数data
传入的变量。有没有人处理过这种事情?我假设它更是一个jQote2怪癖比淘汰赛如何呈现其模板什么的......
代码:
jqoteTemplateEngine = function() {
var templates = {};
this.createJavaScriptEvaluatorBlock = function (script) {
return '<%= ' + script + ' %>';
}
this.getTemplateNode = function (template) {
var templateNode = document.getElementById(template);
if (templateNode == null)
throw new Error("Cannot find template with ID of " + template);
return templateNode;
}
this.renderTemplate = function(templateId, data, options) {
var renderedMarkup = jQuery.jqote(templates[templateId], data);
return ko.utils.parseHtmlFragment(renderedMarkup);
}
this.rewriteTemplate = function (template, rewriterCallback) {
var templateNode = this.getTemplateNode(template);
templates[template] = rewriterCallback(templateNode.text);
}
this.isTemplateRewritten = function (templateId) {
return templateId in templates;
}
};
jqoteTemplateEngine.prototype = new ko.templateEngine();
ko.setTemplateEngine(new jqoteTemplateEngine());
,要点是:http://gist.github.com/1341737
优秀和全面的答案 - 非常感谢你。我的问题不在于我构建模板引擎,而在于使用模板本身(具体而言,我并不满足jQote的期望)。你的例子引起了我的注意。 我将使用较新的模板样式,但关于控制流绑定的位应该是无价的... – egoodberry