[英]handlebar helper functions are not working
我使用的handlebars
我的应用程序的所有模板及其相应的helper
书面功能.html
文件本身。 模板编译发生在我的Backbone
视图中,这意味着它正在.js
文件中进行。
在实施require.js
之前,我所有的视图实例都是全局的,这就是为什么模板编译可以正常工作的原因,但是现在我使用require.js
视图代码require.js
为模块,因此在模板编译时间异常时我的模板无法正常工作( Missing helper: 'setIndex'
)即将到来。 这是我写的方式
index.html的:
//loading library
<script type="text/javascript" src="lib/js/handlebars-v1.1.2.js"></script>
//helper function
<script>
Handlebars.registerHelper('setIndex', function(value){this.index = Number(value);});
</script>
//template
<script id="ftpBodyInitialTpl" type="text/x-handlebars-template">
{{#each bizSteps}}
{{setIndex @index}}
{{/each}}
</script>
.js文件:
define(["handlebars"],function(Handlebars){
//templates compilation happening here.
});
我不知道,为什么它显示Missing helper: 'setIndex'
可以帮助我。
谢谢。
看起来您正在加载没有RequireJS的把手:
<script type="text/javascript" src="lib/js/handlebars-v1.1.2.js"></script>
然后使用RequireJS:
define(["handlebars"],function(Handlebars){
您没有提到模块加载错误消息,因此我假设您已正确配置RequireJS来加载它,并且RequireJS确实已加载它。 问题是您最终得到两个Handlebars实例。 不用RequireJS加载的setIndex
将获得setIndex
助手。 装有RequireJS的没有。 有多种解决此问题的方法:
在不使用RequireJS的情况下加载车把,也避免在RequireJS中进行加载。 在这种情况下,您只需要使用Handlebars导出的全局Handlebars
符号即可。 您没有在模块所需的模块中列出handlebars
。
使用RequireJS加载把手,并避免在没有RequireJS的情况下加载。 您必须删除加载Handlebars的script
标签,并且帮助程序必须成为AMD模块。
加载没有RequireJS的车把和在RequireJS中伪造的加载车把。 您可以保留您的代码。 您可以这样配置RequireJS:
路径:{handlebars:“ path / to / handlebars-fake.js”}
并且handlebars-fake.js
文件将是:
define(function () {
return Handlebars;
});
因此RequireJS最终将具有与script
加载的Handlebars相同的Handlebars实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.