1

私は持っていPhotoCardViewます:

var PhotoCardView = Backbone.View.extend({
    initialize: function() { this.render(); },
    events: { 'click img': 'activateItem' },
    activateItem: function(e) {
        e.preventDefault();
        bus.trigger('switchToFullScreen', {activatorId: this.model.get('id')});
    }
// ...

および親PhotosListView:

var PhotosListView = Backbone.View.extend({
    initialize: function() {
        bus.on('switchToFullScreen', function(args) {
            this.switchToFullScreen(args);
        }, this);
        this.render();
    },
    switchToFullScreen: function(args) {
        new ImageGalleryView({ 
            activatorId: args.activatorId,
            collection: this.collection 
        });
    },
 // ...

リスト ビューは、アプリケーション ルート ハンドラの 1 つで処理されます。

sampleRouteHandler: function(param1, param2, param3) {
    // ...
    photosList.fetch({
        success: function() {
            var photosListView = new PhotosListView({
                collection: photosList,
                page: p
            });
            $('#content').append(photosListView.el);
    // ...

ここで説明されているように、子ビューと親ビューを「強制終了」するコードを追加したと想像してくださいBackbone.js - すべてのサブビューを削除します

しかし、どこでこれを開始すればよいでしょうか? また、イベントバスで処理する方法もわかりません。

4

2 に答える 2

4

ビューの close メソッドに追加します。

var PhotosListView = Backbone.View.extend({
    initialize: function() {
        bus.on('switchToFullScreen', function(args) {
            this.switchToFullScreen(args);
        }, this);
        this.render();
    },
    switchToFullScreen: function(args) {
        new ImageGalleryView({ 
            activatorId: args.activatorId,
            collection: this.collection 
        }); /* not sure if you need to clean it up...if it has event listeners then you do */

    },
    close: function() {
        bus.off('switchToFullScreen', function(args) {
            this.switchToFullScreen(args);
        }, this);
        this.remove(); // removes this PhotoListView
    }
    ...

ただし、ビューを削除するときはいつでも close() メソッドを呼び出すことを忘れないでください。

var viewInstance = new PhotosListView();

...

/*  getting rid of the view because 
you are going to another 'page' */

viewInstance.close();

この例を参照してください: http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

于 2013-09-19T21:59:05.370 に答える