我必须动态地获取仅包含把手辅助功能的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 **
,这意味着通过脚本标记注册帮助程序无效。
有办法可以做到吗?
答案 0 :(得分:0)
您可能需要
imported.src = 'handlebar_helper_load.js';
具有正确的路径(相对/完整)
代替
imported.src = '**handlebar_helper_load.js**';
因为当您附加脚本标签时,浏览器将请求该文件,并且该文件应位于正确的路径中。检查devtools中的“网络”标签,然后查看请求是否成功