4

簡単で短い質問:ビューに2つ以上のサブビューが含まれているかどうか。ビューコンテナはレイアウトビューである必要がありますか?

そうでない場合、良い選択肢は何ですか?

アップデート:

私のコード:

var LikeButtonModal = Backbone.Model.extend({
    url: 'api/profile/like/'
});

var LikeButton = Backbone.Marionette.ItemView.extend({
    tagName: 'button',
    className: 'like',
    template: '<div>like</div>',
    events: {
        'click' : 'like'
    },
    initialize: function(userId){
        this.model = new LikeButtonModal();
    },
    like: function(){
        this.model.save();
    }
})

var LeftProfileView = Backbone.Marionette.Layout.extend({
    template: '#profile-left',
    regions:{
        extra : '.extra'
    },
    initialize: function(){
        this.on("item:rendered", this.editable, this);
    },
    onRender: function(){
        if(this.model.get('userid') != ActiveUser.get('userid')){
            this.extra.show(new LikeButton(this.model.get('userid')));
        }
    }
});
4

1 に答える 1

4

サブビューを別のタイミングで置き換える場合、またはサブビューが非常に異なるタイプである場合、レイアウトはこれに適しています。たとえば、レイアウトにはヘッダー、ナビゲーション、およびメイン コンテンツ領域が含まれる場合があります。

その他のオプションは CollectionViews と CompositeViews です。

コレクション ビューは、コレクション内の各アイテムに対して同じタイプのビューを使用して、アイテムのコレクションをレンダリングします。これは、もののリストに適しています。

CompositeViews は、コレクションのラッパー テンプレートをレンダリングできる CollectionViews です。たとえば、HTML テーブル構造。、table、タグは CompositeView のラッパー テンプレートでレンダリングでき、その後、アイテムのコレクションをタグでレンダリングtheadできtbodyます。tfootertbody

これも、この件についてもう少し光を当てるかもしれません: https://github.com/derickbailey/backbone.marionette/wiki/Use-cases-for-the-different-views

于 2012-08-16T20:19:08.317 に答える