0

列ビューでOSXのFinderと同様に機能する汎用オブジェクトブラウザプラグインを設計しています。インターフェイスをいくつかのネストされたビュー、ブラウザー、列、およびオブジェクトに分割しました。

このプラグインは、ブラウザービュー、オブジェクトビュー、および列ビューをカスタマイズする必要がある場合とない場合があるいくつかのシナリオで使用します。たとえば、オブジェクトがファイルやフォルダになる場合があります。

これは、どのように見えるかわからない場合に備えて、列ビューでのOSXのFinderです。

現時点では、RequireJSを使用して依存関係を渡しますが、ObjectViewを単純に継承および拡張するには、スタック全体を置き換える必要があります。

プラグインを拡張できるが、その一部にすぎない、より良い構造はありますか?

BrowserView.js

var BrowserView = Backbone.View.extend({

    open: function () {
        var collectionView = new CollectionView( {collection: objects} );
    }

});

CollectionView.js

var CollectionView = Backbone.View.extend({

    render: function () {

        this.collection.each( function (object) {
            var objectView = new ObjectView( {model: objects} );

            objectView.bind('click', this.select, this);

            this.container.append( objectView.el );

            objectView.render();

            this.objectViews.push(objectView);
        }, this );

    },

});

ObjectView.js

var ObjectView = Backbone.View.extend({

});
4

1 に答える 1

2

これらのビューを同じモジュールに入れます。

モジュールの目的は、RequireJS を使用している場合でも、単純な古い JavaScript モジュールを使用している場合でも、特定の目的のために関連するオブジェクトと関数のセットをカプセル化することです。この場合、目的は Finder ビューです。

関連するすべてのオブジェクトを同じファイルに保持することで、オブジェクトを連携させる方法の自由度と柔軟性が高まります。


補足として、あなたがしていることに関連して、Backbone.Marionette プラグインの「CompositeView」からこれを機能させる方法についていくつかのアイデアを得ることができるかもしれません。以前、これを使ってフォルダとファイルの階層ツリー ビューを作成したことがあり、Finder の列ビューもこれを使用して簡単に作成できます。

私のプラグインを使用する必要があることを示唆しているわけではないことに注意してください。むしろ、コードをどのように構成したいかを理解するのに役立つと思います。

ここでそれについて話しているブログ投稿があります: http://lostechies.com/derickbailey/2012/04/05/composite-views-tree-structures-tables-and-more/

コードとドキュメントはこちらにあります: https://github.com/derickbailey/backbone.marionette

複合ビューの注釈付きソース コードは次のとおりです: http://derickbailey.github.com/backbone.marionette/docs/backbone.marionette.html#section-26

于 2012-04-16T11:53:26.207 に答える