【问题标题】:Removing model from collection从集合中移除模型
【发布时间】:2012-09-20 03:37:57
【问题描述】:

这是制作backbone.js 应用程序的第一次尝试。 我有一个联系人,它是我的模型和联系人列表/集合。

联系人列表的初始渲染和获取工作正常。

现在我正在尝试在单击事件后从集合中删除联系人。 好像我在 ContactsView 的删除功能中做错了什么。 当我在该方法结束时 console.log 联系人时,this.contacts 集合不会更改。

感谢任何帮助!

var Contact = Backbone.Model.extend({
});

var Contacts = Backbone.Collection.extend({
    model: Contact,
    url: '/backbone/crm/contact'
});

var ContactsView = Backbone.View.extend({
    initialize: function() {
        this.contacts = new Contacts();
        this.contacts.bind("reset", this.render, this);
        this.contacts.bind("change", this.render, this);
        this.contacts.bind("remove", this.render, this);
        this.contacts.fetch();
    },
    events: {
        "click .delete": "delete"
    },
    render: function() {
        $("#contacts tbody").replaceWith(
                                $("#contacts_tmpl").render({ 'contacts': this.contacts.toJSON() }));
    },
    delete: function(e) {
        var id = $(e.currentTarget).parents("tr").attr("id");
        var model = this.contacts.get(id);
        this.contacts.remove(model);
    }
});

var contactsView = new ContactsView({ el: $("#contacts")});

【问题讨论】:

  • 似乎工作 jsfiddle.net/nikoshr/EFWGU 。带有删除类的元素是按钮还是链接?
  • 确实,我的渲染方法有问题。我还有一个问题。所以其他回应,因为我需要更多空间。

标签: javascript backbone.js


【解决方案1】:

模型被有效地从集合中删除。但现在我需要将它从服务器端移除。

我通过以下方式实现了这一点:

var Contacts = Backbone.Collection.extend({
    model: Contact,
    url: '/backbone/crm/contact',
    initialize: function() {
        this.bind("remove", this.delete, this);
    },
    delete: function(model) {
        model.destroy();
    }

这工作并发送正确的删除请求,但我觉得这种尴尬,从删除方法调用销毁方法。

【讨论】:

    猜你喜欢
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 2013-10-02
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多