为了使这个例子尽可能简单,假设我在home.html中有以下代码:
<html>
<head>
<!-- ALL DEPENDENCIES FOR ICANHAZ ARE INCLUDED ABOVE -->
<script type="text/html" id="foo" src="js_template.js"></script>
<script>ich.foo({})</script>
</head>
<body></body>
</html>
在javascript_template.js中,我有以下内容:
Hello world!
事实证明,icanhaz没有检测到foo,因此ich.foo({})会抛出错误。到底发生了什么?
答案 0 :(得分:1)
ICanHaz.js不会自动下载src
的内容。这种行为可以在ICH.js源代码的第510行看到,它在定义模板之前检查脚本标记的innerHTML属性。
您必须内联定义它,或使用您自己的AJAX请求。例如,嵌入式:
<script type="text/html" id="foo">
Hello, world
</script>
或者,如果您使用的是jQuery,则可以使用AJAX加载脚本:
$(function(){
$.get('js_template.js', function(res){
ich.addTemplate('foo', res);
});
});
请记住,在AJAX请求完成之前,ich.foo()
将无法使用。