Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 车把辅助功能不工作_Javascript_Requirejs_Require Handlebars - Fatal编程技术网

Javascript 车把辅助功能不工作

Javascript 车把辅助功能不工作,javascript,requirejs,require-handlebars,Javascript,Requirejs,Require Handlebars,我在应用程序中使用handlebar所有模板及其相应的helper函数在.html文件本身中编写。模板编译发生在我的主干视图中,这意味着它发生在.js文件中 在实现require.js之前,所有我的视图实例都是全局的,这就是模板编译工作正常的原因,但现在我使用require.js将我的视图代码重新分解为模块,因此,当模板编译时出现异常(缺少帮助程序:“setIndex”)时,我的模板无法工作。我就是这样写的 index.html: //loading library <script

我在应用程序中使用
handlebar
所有模板及其相应的
helper
函数在
.html
文件本身中编写。模板编译发生在我的
主干
视图中,这意味着它发生在
.js
文件中

在实现
require.js
之前,所有我的视图实例都是全局的,这就是模板编译工作正常的原因,但现在我使用
require.js
将我的视图代码重新分解为模块,因此,当模板编译时出现异常(
缺少帮助程序:“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>
我不知道,为什么它会显示
缺少助手:“setIndex”
有人能帮我吗


谢谢。

看起来您正在加载把手,无需满足以下要求:

<script type="text/javascript" src="lib/js/handlebars-v1.1.2.js"></script>
define(["handlebars"],function(Handlebars){
您没有提到模块加载错误消息,所以我假设您正确配置了RequireJS来加载它,并且RequireJS确实加载了它。问题是,您最终得到了两个把手实例。在没有RequireJS的情况下加载的实例将获得
setIndex
帮助程序。加载了RequireJS的那个没有。此问题有多种解决方案:

  • 在不使用RequireJS的情况下加载把手,并避免使用RequireJS加载把手。在本例中,您只需使用把手导出的全局
    把手
    符号。您没有在模块所需的模块中列出
    把手

  • 使用RequireJS加载把手,并避免使用RequireJS加载把手。您必须删除加载把手的
    脚本
    标记,助手必须成为AMD模块

  • 加载不带RequireJS的车把,并在RequireJS中加载车把。您可以保持代码现在的状态。您可以这样配置RequireJS:

    路径:{ handlebars:“path/to/handlebars fake.js” }

  • handlebar fake.js
    文件将是:

    define(function () {
        return Handlebars;
    });
    

    因此,RequireJS最终会得到与加载了
    脚本

    的车把相同的实例。您是否缺少index.html中的第一个关闭
    标记,或者只是您发布的示例?我在助手函数周围添加了
    脚本
    标记。
    
    define(function () {
        return Handlebars;
    });