0

我正在设计一个通用对象浏览器插件,其功能类似于 OS X 的列视图中的 Finder。我已将界面划分为几个嵌套视图、浏览器、列和对象。

我将在浏览器视图、对象视图和列视图可能需要或可能不需要自定义的几种情况下使用此插件。例如,有时对象将是文件和文件夹。

这是 OS X 的列视图中的 Finder,以防您不知道它的外观。

目前我正在使用 RequireJS 传递依赖项,但是为了简单地继承和扩展 ObjectView,我必须替换整个堆栈。

有没有更好的结构可以扩展插件但只是一部分?

浏览器视图.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 );

    },

});

对象视图.js

var ObjectView = Backbone.View.extend({

});
4

1 回答 1

2

我会将这些视图放在同一个模块中。

模块的目的——无论你是使用 RequireJS 还是只是普通的旧 JavaScript 模块——都是为了特定目的封装一组相关的对象和函数。在这种情况下,您的目的是查找器视图。

通过将所有相关对象保存在同一个文件中,您将拥有更多的自由度和灵活性来让这些对象协同工作。


作为旁注,但与您正在做的事情相关,您可能能够从我的 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 回答