2017-03-01 38 views
0

我已經能夠讓我的Marionette 3模板在內聯時工作。當我將模板包含在.html文件中時,渲染視圖時會出現NoTemplateError。我見過使用TemplateCache並需要的示例,但我不明白爲什麼我不能將模板.html文件包含在主體中並使其工作。Marionette 3模板可以內聯方式工作,但不包括在單獨的文件中時

主要源文件

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/html"> 

<head> 
    <title>Gmail API Quickstart</title> 
    <meta charset='utf-8' /> 
</head> 

<body> 
<script src="jquery.js" type="text/javascript"></script> 
<script src="underscore_1_8_3.js" type="text/javascript"></script> 
<script src="backbone.js" type="text/javascript"></script> 
<script src="backbone.radio.js" type="text/javascript"></script> 
<script src="backbone.marionette_3_2_0.js" type="text/javascript"></script> 
<script src="bootstrap.js" type="text/javascript"></script> 
<link href="bootstrap.css" rel="stylesheet"> 
<link href="mycss.css" rel="stylesheet"> 

<script src="messageDetails.js" type="text/javascript"></script> 

//這個模板工程

<script type="x-template/underscore" id="mailItem-template"> 
    <div id="mailItem" class="col-md-12"> 
      <img src="trash_recyclebin_empty_closed.png" align = "top" width="18" height="18"/> 
      <input type="checkbox" style="padding: 10;"/> 
    </div> 
</script> 

//如果我註釋掉上面的模板,並把在.html文件模板它不工作,風景。我試過

<link href="mailItem.tmpl.html" type="text/html"/> 

//我也試過,但我得到一個語法錯誤

<script src="mailItem.tmpl.html" type="text/javascript"/> 

//查看使用模板

<script src="MessageDetailsView.js" type="text/javascript"></script> 

回答

0

這是因爲使用<script>標記不會加載它。本質上,如果一個<script>標籤不是JavaScript,那麼瀏覽器將不再使用它。這很方便,因爲稍後您可以使用它作爲模板,但瀏覽器不會加載外部模板。

可能做的是讓你的外部模板一個javascript。

var myTemplate = _.('My template text'); 

,那麼你應該能夠加載通過標籤的期望myTemplate可以全局。

但是,您最好的選擇是最有可能使用像webpack這樣的構建工具來預編譯並將您的模板作爲JavaScript直接導入到腳本中。

更多信息: Explanation of <script type = "text/template"> ... </script>

相關問題