[英]Javascript - Backbone - Code throwing error
下面的代码引发错误-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>
您的问题是data.employees
有一个逗号结尾的逗号:
var data = {
employees: [
// ...
{ firstName: "Bugs",
lastName: "Bunny",
employeeID: 30000,
jobTitle: "UI tester"
}, // <------------------------- Right here
]
};
所有其他JavaScript解析器(错误地)都忽略了结尾的逗号,但IE(至少是较旧的IE)将null
插入了数组,因此它们看到的data
如下:
var data = {
employees: [
// ...
{ firstName: "Bugs",
lastName: "Bunny",
employeeID: 30000,
jobTitle: "UI tester"
},
null
]
};
然后,您的Mustache模板中的{{#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>
这里发生的是您的浏览器将mustache.js文件解释为Microfosft JScript,而不是Javascript。
希望这会有所帮助!
好吧,我已经修复了它,这有三个问题。
1)逗号问题,“ mu太短”的问题也可以正确识别。
2)您必须将整个脚本包装在$(function() { .......... });
周围$(function() { .......... });
否则它将无法正确显示。
3)最新版本的小胡子给了我错误,当我使用旧的胡须时,它可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.