我正在尝试创建一些通用模块,以便可以在多个 Backbone.Collection 上重用它,但我遇到了以下问题。
我已经下载了https://github.com/backbone-boilerplate/backbone-boilerplate作为我的应用程序模板,所以在 /app/modules 中,我创建了以下 js
- /app/modules/collection.js(所有其他集合的通用内容)
- /app/modules/users.js(从 collection.js 扩展的用户集合)
在 /app/modules/collection.js 中,代码是:
define([
"backbone"
],
function(Backbone) {
var collection = Backbone.Collection.extend({
pagination : { total : 0 },
parse: function( response ) {
if ( response.data ) {
self.pagination.total = response.total;
return response.data;
}
return response;
},
});
return collection;
});
在 /app/modules/users.js 中的代码是:
define([
"backbone",
"modules/collection"
],
function(Backbone, Collection) {
var users = Collection.extend({
self: null,
initialize: function( models, options ) {
self = this;
},
getData: function() {
this.fetch({
success: function() {
console.log('ok');
},
error: function() {
console.log('error');
}
});
}
});
return users;
});
在我的 /app/router.js 中,代码是:
define([
"app",
"modules/users"
],
function(app, Users) {
var Router = Backbone.Router.extend({
routes: {
"": "index"
},
index: function() {
var usersA = new Users([], {
url: 'http://test.test.test./users_a.html'
});
usersA.getData();
var usersB = new Users([], {
url: 'http://dev.digbil.com/users_b.html'
});
usersB.getData();
}
});
return Router;
});
http://test.test.test./users_a.html假设返回 20 条记录,所以在 usersA.pagination.total 中应该包含值 20
http://test.test.test./users_b.html假设返回 50 条记录,所以在 usersA.pagination.total 中应该包含值 50
我的问题是两个 usersA.pagination.total 都包含值 50,似乎第二个实例正在覆盖第一个实例?
但是 userA.models 和 userB.models 都包含正确的数据记录,其中显示了我的 usersA 集合中的 20 个用户和我的 userB 集合中的 50 个用户。
如果我分别执行它们,例如:
define([
"app",
"modules/users"
],
function(app, Users) {
var Router = Backbone.Router.extend({
routes: {
"": "index"
},
index: function() {
var usersA = new Users([], {
url: 'http://test.test.test./users_a.html'
});
usersA.getData();
}
});
return Router;
});
userA.pagination.total 包含正确的值 20
define([
"app",
"modules/users"
],
function(app, Users) {
var Router = Backbone.Router.extend({
routes: {
"": "index"
},
index: function() {
var usersB = new Users([], {
url: 'http://dev.digbil.com/users_b.html'
});
usersB.getData();
}
});
return Router;
});
userB.pagination.total 包含正确的值 50
不知道我在哪里做错了?
[编辑] 我应该如何更改我的代码以使每个唯一实例具有不同的分页值?
[编辑] http://jsfiddle.net/mcchin/Bb5sq/快速样机
[编辑] 似乎问题出在“解析”函数中?