无法删除Backbone Collection中的模型

时间:2015-02-20 17:21:35

标签: javascript backbone.js

我正在使用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]

0 个答案:

没有答案
相关问题