RequireJS和Handlebars - 把手是未定义的

时间:2015-04-15 14:50:30

标签: javascript jquery requirejs handlebars.js

我试图在j Query插件中使用Require JS和Handlebars,但我得到的只是" Handlebars未定义"。把手正在正确装载。

我的配置:

require.config({
   baseUrl: "static/js/lib",
   paths: {
      "jquery": "jquery-1.10.2.min",
      "handlebars": "handlebars-v3.0.1",
   },
   shim: {
      "jquery.myplugin": {
         deps: ["handlebars"]
      }
   }
});

需要插件:

require(["jquery"], function(){

   if( $('[data-init="myplugin"]').size() > 0 ){
      require(["jquery.myplugin"], function(){
         $(function(){
            Handlebars.compile("<a></a>"); // This throws Handlebars is undefined
         });
         $('[data-init="myplugin"]').myplugin();

      });
   }

});

然后我想在插件中使用Handlebars。如何将Handlebars传递给我的插件,以便我可以编译模板? (在脚本标签中)

1 个答案:

答案 0 :(得分:1)

如果要定义把手,则需要将把手设置为依赖项。例如,您可以将第一行更改为:

require(["jquery", "handlebars"], function($, Handlebars){

此外,如果您创建或编辑jquery.myplugin的文件,则应修改它以调用define()而不是使用shim配置。如果这不是一个选项,你可以将jquery作为依赖项添加到shim配置中。然后,您只能进行一次具有所有三个依赖关系的require调用。