繁体   English   中英

车把助手功能不起作用

[英]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的没有。 有多种解决此问题的方法:

  1. 在不使用RequireJS的情况下加载车把,也避免在RequireJS中进行加载。 在这种情况下,您只需要使用Handlebars导出的全局Handlebars符号即可。 您没有在模块所需的模块中列出handlebars

  2. 使用RequireJS加载把手,并避免在没有RequireJS的情况下加载。 您必须删除加载Handlebars的script标签,并且帮助程序必须成为AMD模块。

  3. 加载没有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM