我正在使用Backbone构建SaaS日历。所有源代码都在这里:
https://github.com/zxwinmain/Calendar/
但是有一个问题:我无法移除集合中的模型。
让我们看看这个文件:
https://github.com/zxwinmain/Calendar/blob/master/statics-src/js/channel.js
第60行:
var user_updated = function (_response) {
app.instances.collections.users.remove(app.instances.collections.users.where({
id: _response.ID
}));
app.instances.collections.users.add(user_package(_response));
};
我尝试先删除它然后添加一个新模型来更新模型。
在另一个文件中:
/statics-src/js/view/component_window_settingsView.js
有绑定:
app.instances.collections.users.bind('add', this.userListAdd);
app.instances.collections.users.bind('remove', this.userListRemove);
userListAdd: function (_model) {
$('#userList').append('<dd id="' + _model.get('id') + '"><div class="left"></div><div class="right"><a class="administrator icon-flash"></a><a class="resetPassword icon-ccw"></a><a class="delete icon-cancel"></a></div></dd>');
$('#' + _model.get('id')).find('div.left').html('<span class="name">' + _model.get('name') + '</span><span class="email">' + _model.get('email') + '</span>');
if (_model.get('is_administrator') == '1') $('#' + _model.get('id')).find('span.name').css('color', 'red');
}
userListRemove: function (_model) {
$('#' + _model.get('id')).remove();
}
问题是:
当我更新数据时,骨干网不会移除模型。
为什么?
_response 就像:
{
BODY_AVATAR: "",
BODY_EMAIL: "812531235@qq.com",
BODY_INTRO: "",
BODY_NAME: "测试帐号",
BODY_PASSWORD: "48f31a95b28d5c8f4dfcbecc03670292",
ID: "ac0211e8ad38a7e1ebe788b888601b23",
ID_ACCOUNT: "64bd06e00e5b2680583a5cba9d6762fd",
IS_ADMINISTRATOR: "1",
TIME_CREATED: "1424452480",
TIME_DELETED: "0",
TIME_UPDATED: "1424453119"
}
app.instances.collections.users.toJSON()结果:
{
avatar: "/statics/img/avatar_default.jpg",
email: "812531235@qq.com",
id: "ac0211e8ad38a7e1ebe788b888601b23",
intro: "",
is_administrator: "0",
name: "测试帐号",
time_created: "1424452480",
time_deleted: "0",
time_updated: "1424452840"
}
数据包:
var user_package = function (_response) {
var avatar = '/statics/img/avatar_default.jpg';
if (_response.BODY_AVATAR) avatar = _response.BODY_AVATAR;
return {
id: _response.ID,
email: _response.BODY_EMAIL,
name: _response.BODY_NAME,
avatar: avatar,
intro: _response.BODY_INTRO,
is_administrator: _response.IS_ADMINISTRATOR,
time_created: _response.TIME_CREATED,
time_updated: _response.TIME_UPDATED,
time_deleted: _response.TIME_DELETED
};
};
当我在控制台中运行此代码时:
app.instances.collections.users.remove(app.instances.collections.users.where({ 'id': 'ac0211e8ad38a7e1ebe788b888601b23' }));
结果是[undefined]