直接在源页面中执行<script>标记中加载的javascript

时间:2019-01-29 11:01:55

标签: javascript backbone.js handlebars.js handlebarshelper

我必须动态地获取仅包含把手辅助功能的javascript文件。 这将在包含模板的html文件中获取。

动态文件( handlebar_helper_load.js ):

 从“ handlebars”导入车把;

handlebars.registerHelper('** fullName **',function(person){
            返回person.firstName +“” + person.lastName;
})
 

主干视图文件:

 从“ handlebars”导入车把;

导出默认的View.extend({
    模板:模板,

    onRender(){
        var import = document.createElement('script');

        //这会将以上文件加载到此页面的脚本标签中
        import.src ='** handlebar_helper_load.js **';
        document.head.appendChild(已导入);

        //这是车把模板
        var source ='
\ n'+                         '

通过{{fullName author}}

\ n'+                         '
{{body}}
\ n'+                         '\ n'+                         '

评论

\ n'+                         '\ n'+                         '{{#每个评论}} \ n'+                         '

通过{{fullName author}}

\ n'+                         '
{{body}}
\ n'+                         '{{/ each}} \ n'+                         '
\ n';         var template = handlebars.compile(source);         var context = {             作者:{firstName:“ Alan”,lastName:“ Johnson”},             正文:“我爱车把”,             注释: [{                 作者:{firstName:“ Yehuda”,lastName:“ Katz”},                 身体:“我也是!”             }]         };         var html = template(context);         $。('handlebarDiv')。append(html);     },  }

我面临的问题是我收到一个错误,指出未定义函数 ** fullName ** ,这意味着通过脚本标记注册帮助程序无效。
有办法可以做到吗?

1 个答案:

答案 0 :(得分:0)

您可能需要

imported.src = 'handlebar_helper_load.js';

具有正确的路径(相对/完整)

代替

imported.src = '**handlebar_helper_load.js**';

因为当您附加脚本标签时,浏览器将请求该文件,并且该文件应位于正确的路径中。检查devtools中的“网络”标签,然后查看请求是否成功