0

以下のコードは、エラーをスローしています-「MicrosoftJScriptランタイムエラー:オブジェクトは、このコードのこのセクションにある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(少なくとも古いもの)はnull配列に挿入されるため、次のように表示dataされます。

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

次に、{{#employees}}Mustacheテンプレートのがを使用しようとしてnullしまい、すべてがバラバラになります。

末尾のコンマを削除すると、すべて正常に機能するはずです。

于 2012-07-04T17:44:09.257 に答える
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 ファイルを Javascript ではない Microfosft JScript として解釈することです。

うまくいけば、これが役に立ちます!

于 2012-07-04T14:10:59.460 に答える
0

さて、私はそれを修正しました、それには3つの問題がありました。

1) コンマの問題、「mu が短すぎる」問題も正しく識別されます。

2)スクリプト全体をラップする必要 $(function() { .......... });があります。そうしないと、正しく表示されません。

3) 口ひげの最新バージョンではエラーが発生しましたが、古いバージョンを使用すると問題なく動作しました。

于 2012-07-05T14:22:44.683 に答える