3

私はバックボーンの初心者です。新しいモデルがコレクションに追加されたときにビューが更新されるように、コレクションをビューにバインドしようとしています。モデルでこれを行うと、モデルの変更イベントにバインドできると思います。しかし、コレクションで同じことを行うにはどうすればよいでしょうか。

App.Views.Hotels = Backbone.View.extend({

    tagName: 'ul',

    render: function() {
        this.collection.each(this.addOne, this);
        var floorplanView = new App.Views.Floorplans({collection:floorplanCollection});
        $('.floorplans').html(floorplanView.render().el);
        return this;
    },

    events: {'click': 'addfloorplan'},

    addOne: function(hotel) {
        var hotelView = new App.Views.Hotel ({model:hotel});
        this.$el.append(hotelView.render().el);
    },

    addfloorplan: function() {
        floorplanCollection.add({"name": "another floorplan"});
    }
});

App.Collections.Floorplans = Backbone.Collection.extend({
    model: App.Models.Floorplan,
    initialize: function () {
        this.bind( "add", function() {console.log("added");} );
    }
});

クリック イベントが発生し、コレクションに追加されます。しかし、どうすればビューを更新できますか?

4

2 に答える 2

3

コレクションに新しいアイテムが追加されたときに発生addするコレクションのイベントをリッスンできます。Backbone の最新バージョンでは、このメソッドはイベントをリッスンするため、またはリッスンするために優先されます。(詳細についてはドキュメントを参照してください)listenTobindon

たとえば、あなたの場合、これでうまくいくはずです:

App.Views.Hotels = Backbone.View.extend({

  initialize: function() {
    this.listenTo(this.collection,'add', this.addOne);
  },
  //rest of code

お役に立てれば!

于 2013-03-08T18:15:57.677 に答える
2

これは、私がずっと前に従った素晴らしいチュートリアルです。

Backbone.js の紹介: パート 3 – コレクションをビューにバインドする

これは、ドーナツのコレクションが与えられたときにドーナツごとに UpdatingDonutView をレンダリングする DonutCollectionView を定義するのに役立ちます。

于 2013-03-08T18:10:39.157 に答える