2012-07-25 66 views
1

爲了使這個例子儘可能的簡單,讓我們說我有下面的代碼在Home.html中:icanhaz沒有找到模板

<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({})正在拋出一個錯誤。這裏到底發生了什麼?

回答

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); 
    }); 
}); 

請記住,ich.foo()將無法​​使用,直到AJAX請求完成。

+0

感謝Andrew的快速回復。我簡單地認爲,該瀏覽器會同步下載腳本,並且在我使用任何傳遞到$(document).ready中的內容時,src的內容將在DOM中可用。這不是典型的text/javascript腳本標籤? – Michael 2012-07-25 05:06:48

+0

它適用於Javascript,但腳本的內容從未實際注入到元素本身(即它是'innerHTML'),這是ICH檢查的內容。 – 2012-07-25 05:07:39