2012-07-12 32 views
3

我用敲除和jQuery.tmpl框架在我的项目,有时我用jQuery的TMPL才产生这样的HTML:我可以使用敲除作为模板引擎吗?

var html = $("#template").tmpl(data); 
html.appendTo(destElement); 

我不喜欢那地方我有淘汰赛模板结合某处用于html生成的jquery模板,也用于绑定。

我想知道knockout是否能够像jquery tmpl那样从模板生成html。 如果是这样,我将完全删除jquery-tmpl,因为在大多数情况下,我仅将它用于从模板生成html。

请指点

回答

3

AFAIK淘汰赛不支持预编译模板存储为像jQuery模板的JavaScript变量一样。

因此,您在问题中提供的示例不可能仅使用Knockout模板绑定。绑定确实提供了一些callbacks for post- and after-rendering,但是这不完全相同,因为这些回调的输入是编译DOM元素,而不是JavaScript引用它。

我们目前的项目中,我们正在使用Handlebars作为我们的模板引擎,主要有两个原因,为什么我会选择这样的:

  1. jQuery的模板已被弃用,目前没有官方的插件存在和jQuery UI的团队不清楚他们是否将模板纳入核心。
  2. 使用把手可以提取模板以分离可以从命令行预编译的.handlebars文件。

我不使用淘汰赛模板结合,我所有的模板被提取到单独的文件和预编译分离的.js文件。我所要做的就是包含已编译的.js文件,并且可以作为JS变量访问模板。

如果您选择jQuery模板并希望预编译模板,您必须将所有模板添加到一个HTML文件并编写一些JavaScript,这些JavaScript将采用每个模板并将其转换为JavaScript,或者您可以编写建立一个接受你的模板的小节点应用程序,将它们转换并再次输出。

+0

基本上我不需要预编译模板,我只需要一种获取评估HTML的方法。 – Madman 2012-07-12 17:48:07

+0

“评估”是什么意思?如果您只是想将某些部分定义为模板,您可以将jQuery放在板子上并使用KO的模板绑定,它也会执行相同的技巧,您不需要将其明确编译为JS,所有操作都将由绑定处理。 – thomaux 2012-07-12 18:00:49

+1

似乎我在这个方法中找到了我需要的东西ko.applyBindingsToNode(element,null,app.viewModel);但不完全。不同之处在于它将模板结果呈现为元素,但是我需要结果作为参考内存中的dom节点,正如我在问题 – Madman 2012-07-12 18:37:01

相关问题