如何在加载诱人时删除404错误?

时间:2015-01-20 10:46:20

标签: javascript jquery backbone.js marionette backbone-views

我在加载模板时遇到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>

1 个答案:

答案 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()函数。