Javascript - Backbone - 代码抛出错误

Javascript - Backbone - Code throwing error

本文关键字:出错 错误 代码 Backbone Javascript      更新时间:2023-09-26

下面的代码在胡子中抛出了一个错误 - "Microsoft JScript 运行时错误:对象不支持此属性或方法".js在它下面的这段代码中

function quote(text) {
    var escaped = text.replace(jsCharsRe, function (c) {
      return "''u" + ('0000' + c.charCodeAt(0).toString(16)).slice(-4);
    });"

这是我的代码

<%@  Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="VSBackboneDemo._Default" %>
<html>
<head>
    <title>VS backbone demo</title>
    <script src="Scripts/jquery.min.js" type="text/javascript"></script>
    <script src="Scripts/underscore-min.js" type="text/javascript"></script>
    <script src="Scripts/backbone-min.js" type="text/javascript"></script>
    <script src="http://github.com/janl/mustache.js/raw/master/mustache.js"></script>
    <script type="text/javascript">

        EmployeeDataView = Backbone.View.extend({
            initialize: function () {
                this.render();
            },
            render: function () {
                var data = {
                    employees: [
                { firstName: "Mickey",
                    lastName: "Mouse",
                    employeeID: 10000,
                    jobTitle: "Software Developer"
                },
                { firstName: "Donald",
                    lastName: "Duck",
                    employeeID: 20000,
                    jobTitle: "Software Engineer"
                },
                { firstName: "Bugs",
                    lastName: "Bunny",
                    employeeID: 30000,
                    jobTitle: "UI tester"
                },
                ]
                };
                var tpl = "Employees:<ul>{{#employees}}<li>{{firstName}} {{lastName}}" +
                    "{{employeeID}}{{jobTitle}}</li>{{/employees}}</ul>";
                var html = Mustache.to_html(tpl, data);
                $('#EmployeeDataContainer').html(html);

            }
        });

        var EmployeeDataView = new EmployeeDataView({ el: $("#EmployeeDataContainer") });
    </script>
</head>
<body>
    <div id="EmployeeDataContainer">
    </div>
</body>
</html>

你的问题是你在data.employees中有一个杂散的尾随逗号:

var data = {
    employees: [
        // ...
        { firstName: "Bugs",
          lastName: "Bunny",
          employeeID: 30000,
          jobTitle: "UI tester"
        }, // <------------------------- Right here
    ]
};

所有其他 JavaScript 解析器(错误地)忽略尾随逗号,但 IE(至少是较旧的)将null放入数组中,因此它们data如下所示:

var data = {
    employees: [
        // ...
        { firstName: "Bugs",
          lastName: "Bunny",
          employeeID: 30000,
          jobTitle: "UI tester"
        },
        null
    ]
};

然后,胡子模板中的{{#employees}}最终尝试使用null,一切都分崩离析。

删除尾随逗号,一切应该都可以正常工作。

您忘了在此行中添加type="text/javascript"

<script src="http://github.com/janl/mustache.js/raw/master/mustache.js"></script>

所以把它改成这样:

<script type="text/javascript" src="http://github.com/janl/mustache.js/raw/master/mustache.js"></script>

这里发生的事情是,你的浏览器将你的胡子.js文件解释为Microfosft JScript,这不是Javascript。

希望这有帮助!

好吧,我已经修复了它,它有三个问题。

1)逗号问题,"mu太短"的正确问题也确定了。

2)你必须将整个脚本包裹起来$(function() { .......... });否则它将无法正确显示。

3)最新版本的小胡子给了我错误,当我使用一个较旧的它工作正常。

相关文章: