我在加载模板时遇到404错误。我正在尝试使用router.I制作router.js文件和firstpage.html。我需要显示“firstpage.html”的竞争
GET http://run.plnkr.co/firstpage.html 404 (Not Found)
underscore.js:1235 Uncaught TypeError: Cannot read property 'replace' of undefined
(index):38 ContactManager has started!
这是我的代码 http://plnkr.co/edit/JiagaB5ztfqmxQnwgcwR?p=preview
<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script src="json2.js"></script>
<script src="underscore.js"></script>
<script src="backbone.js"></script>
<script src="backbone.marionette.js"></script>
<script src="common.js"></script>
<script src="router.js"></script>
<script src="view.js"></script>
</head>
<body>
<div>
<div id="header">
</div>
<div id="contend">
</div>
<div id="fotter">
</div>
</div>
<script>
$(document).ready(function(){
var ContactManager = new Marionette.Application();
ContactManager.addRegions({
mainRegion:"#contend"
})
ContactManager.on("start", function(){
console.log("ContactManager has started!");
var routers = new R({app: ContactManager})
});
ContactManager.start();
})
</script>
</body>
</html>
答案 0 :(得分:0)
在common.js中,您可以调用以下内容
render.tmpl_cache[tmpl_name] = _.template(tmpl_string);
但是,变量tmpl_string
在传递给undefined
时会有_.template()
值,从而引发异常。你可以通过
var tmpl_string;
_.template(tmpl_string); // Uncaught TypeError: Cannot read property 'replace' of undefined
出现此问题的原因是尝试为tmpl_string
成功回调中的$.ajax()
分配值 - 但这是一个异步函数 - 并且我们将执行render.tmpl_cache[tmpl_name] = _.template(tmpl_string)
行等待Ajax响应。
您可以使用jQuery promises来解决此问题,以便在您准备好后,该变量仅传递给_.template()
函数。