2

我一直在玩 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 的候选版本,所以我希望这不适用于任何新版本。

谢谢。

4

1 回答 1

3

fetchsuccess回调签名从 更改0.9.90.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对象是一个普通的 javascript 数组并且没有这样的方法。要遵守新 API,您需要使用以下命令调用它:

var collection = this;
options.success = function(data, textStatus, jqXHR) {
    model.parse(data);
    if(success)
        success(collection , data, options);
};
于 2013-01-28T13:19:10.953 回答