0

これは、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")});
4

1 に答える 1

0

モデルはコレクションから効果的に削除されます。しかし、今はサーバー側でそれを削除する必要があります。

私はこれを実行して実装しました:

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

これは機能し、正しい削除要求を送信しますが、delete メソッドから destroy メソッドを呼び出すのは、この種の扱いにくいと思います。

于 2012-09-28T09:22:54.987 に答える