下面的代码在它的代码部分的mustache.js中抛出了一个错误 - “Microsoft JScript运行时错误:对象不支持此属性或方法”.-“
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>
答案 0 :(得分: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
]
};
然后,您的Mustache模板中的{{#employees}}
最终尝试使用null
,一切都崩溃了。
删除那个尾随逗号,一切都应该正常。
答案 1 :(得分: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。
希望这有帮助!
答案 2 :(得分:0)
我已经修好了,有三个问题。
1)逗号问题,“mu太短”的问题是正确的 也确定了。
2)你必须将整个脚本包裹在$(function() {
.......... });
周围,否则它将无法正常显示。
3)当我使用时,最新版本的小胡子给了我错误 较旧的它工作得很好。