0

下面的代码在这部分代码中抛出错误 - “Microsoft JScript 运行时错误:对象不支持此属性或方法”在 mustache.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>
4

3 回答 3

1

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

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

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

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

然后{{#employees}}在你的 Mustache 模板中最终尝试使用 anull并且一切都崩溃了。

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

于 2012-07-04T17:44:09.257 回答
0

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

1)逗号问题,“mu太短”的问题也被正确识别。

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

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

于 2012-07-05T14:22:44.683 回答
0

您忘记添加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>

这里发生的是您的浏览器将您的 mustache.js 文件解释为 Microfosft JScript,它不是 Javascript。

希望这会有所帮助!

于 2012-07-04T14:10:59.460 回答