【发布时间】:2012-02-28 22:28:51
【问题描述】:
我正在使用 jQuery 1.7.1、Underscore 1.3.1 和 Backbone 0.9.1。这是我的 Backbone 代码,完整:
$(function(){
window.Student = Backbone.Model.extend({
});
window.Students = Backbone.Collection.extend({
model: Student,
});
window.AllStudents = new Students();
AllStudents.url = "/init.json";
AllStudents.bind('reset', function() {
console.log('hello world');
});
AllStudents.fetch();
AllStudents.fetch({ url: "/init.json", success: function() {
console.log(AllStudents);
}, failure: function() {
console.log('failure');
}});
AllStudents.fetch({ url: "/init.json" }).complete(function() {
console.log(AllStudents);
});
});
在第三个.fetch() 调用中甚至只出现了一个控制台语句,然后它是一个空对象。
我很困惑。我究竟做错了什么?如何绑定到重置事件并使用获取的数据?
这是 JSON 文件:
[
{ text: "Amy", freq_2011: 5 },
{ text: "Angeline", freq_2011: 26 },
{ text: "Anna", freq_2011: 55 }
]
我检查了 JSON 文件是否作为 application/json 提供,并且我还可以看到它被 XHR 请求获取了 3 次。
更新:这是我的完整 HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<div class="container"></div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.1/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.1/backbone-min.js"></script>
<script src="/js/test.js"></script>
</body>
</html>
其他人可以重现该问题吗?
【问题讨论】:
-
您是否尝试在集合本身的定义中设置 url 参数?
-
是的,没有帮助:(请其他人尝试代码,看看他们是否可以重现问题?
-
我最终通过使用自举模型解决了这个问题:documentcloud.github.com/backbone/#FAQ-bootstrap 不过,我仍然完全不知道出了什么问题。