我一直在玩Backbone,我正在尝试学习它是如何工作的,所以我可以使用骨干创建phonegap应用程序。 0.9.9版本运行良好,升级到0.9.10后返回:
TypeError: collection[method] is not a function
collection[method](resp, options);
backbone-0.9.10.js (line 821)
似乎问题与以下部分有关:
var params = _.extend({
'method': 'GET',
'url': this.url,
'cache': true,
'dataType': 'json',
'processData': true
}, options);
console.log(params);
return $.ajax(params);
我无法找出问题所在。
使用0.9.9的工作版
http://92.245.6.92/backbone.peoples/index.html
使用0.9.10
升级而不能正常运行的版本http://92.245.6.92/backbone.peoples/index2.html
请问我的代码是否存在重大错误或发生了什么事情,请您帮忙。 0.9.10是1.0的候选版本,所以我希望这不适用于任何新版本。
感谢。
答案 0 :(得分:3)
抓取success
回调签名已从0.9.9
更改为0.9.10
。回调签名现在是
function(collection, resp, options) { ...
在您的应用中,您已覆盖Collection.sync
,并使用(app.js:35
)执行回调:
options.success = function(data, textStatus, jqXHR) {
model.parse(data);
if(success)
success(data, textStatus, jqXHR);
};
这会导致Backbone尝试在reset
对象上调用方法data
,这是一个vanilla javascript数组并且没有这样的方法。
要遵守新API,您需要使用以下命令进行调用:
var collection = this;
options.success = function(data, textStatus, jqXHR) {
model.parse(data);
if(success)
success(collection , data, options);
};