2

私は Backbone.js を使い始めていますが、最も単純な概念実証が機能していないようです。次のコードがあります。

$(function() {

    var Contact = Backbone.Model.extend({

        url: 'contacts.txt'

    });

    var ContactList = Backbone.Collection.extend({

        model: Contact,
        url: 'contacts.txt'

    });

    var Contacts = new ContactList();

    var ContactView = Backbone.View.extend({

        tagName: 'li',

        template: _.template($('#contact-template').html()),

        initialize: function() {
            _.bindAll(this);
        },

        render: function() {
            this.$el.html(this.template(this.model.toJSON()));
            return this;
        }

    });

    var AppView = Backbone.View.extend({

        el: '#contacts',

        initialize: function() {
            Contacts.bind('add', this.addOne, this);
            Contacts.fetch();
        },

        addOne: function(Contact) {
            var view = new ContactView({model: Contact});
            this.$el.append(view.render().el);
        }

    });

    var app = new AppView();

});

ファイルcontacts.txtには単純な JSON 構造が含まれており、Chrome によると正常にロードされます。

[{"from_acct_id": 5, "ct": 0, "from_display_nm": "Name 1", "to_acct_id": 1},
 {"from_acct_id": 3, "ct": 1, "from_display_nm": "Name 2", "to_acct_id": 1},
 {"from_acct_id": 2, "ct": 0, "from_display_nm": "Name 3", "to_acct_id": 1},
 {"from_acct_id": 4, "ct": 1, "from_display_nm": "Name 4", "to_acct_id": 1}]

何らかの理由で、イベントにaddOne()バインドされた関数が呼び出されることはありません。何がうまくいかないのですか?addAppView

4

1 に答える 1

1

バックボーン コレクションのフェッチ呼び出しは、リセット イベントを発生させます。代わりにバインドしてリセットしてください。

http://documentcloud.github.com/backbone/#Collection-fetch

于 2012-05-04T19:59:27.393 に答える