我正在使用knockout.js及其内置的模板系统。我将模板定义为:
<script type="text/html" id="subjectItemView">
<span class="name" data-bind="text: subjectName" />
</script>
然后我使用模板的id,因此将此作为脚本的一部分是必要的。
我的单页面应用程序中有很多这些模板,并且最近已经转移到使用require.js来加载仅在需要时才需要的脚本。我想对模板做同样的事情,最好使用require.js,这样我的模块就可以将模板列为依赖项。
我该怎么做?
答案 0 :(得分:10)
我使用require.js文本插件:http://requirejs.org/docs/api.html#text。获得模板文本后,可以将其附加到新脚本标记中的页面(类型为text/html
或javascript以外的其他内容)。
我实际上一直在使用一个直接处理字符串的修改模板引擎,因此我不需要在页面上附加额外的脚本标记。
我的代码类似于:
this.activate = function() {
//load view model from the server
if (!this.loaded) {
require(["modules/" + name, "text!../templates/" + self.template + ".html"], function(Module, template) {
ko.templates[self.template] = template;
self.data(typeof Module === "function" ? new Module() : Module);
self.loaded = true;
});
}
};
我使用的stringTemplateEngine如下:https://github.com/rniemeyer/SamplePresentation/blob/master/js/stringTemplateEngine.js