Как создать базовое представление в backbone.js?

Мне нужно создать базовое представление, которое будет расширять все мои представления. Я не совсем уверен, где и когда объявить это представление.

По сути, мне нужно внедрить global variables во все мои шаблоны, и я не делаю этого в каждом методе render().

это моя древовидная структура на данный момент:

|-main.js
|-app.js
|-require.js
|-App
|  |-View
|  |   |-Dashboard.js
|  |   |-Header.js
|  |   |-Content.js
|  |-Model
|  |-Collection
|  |-Template
|
|-Libs
   |-...

это мое приложение.js

var App = {
    ApiURL: "http://domain.local",
    View: {},
    Model: {},
    Collection: {},
    Registry: {},
    Router: null
};

define(['backbone', 'View/Dashboard'], function(Backbone){
    var AppRouter = Backbone.Router.extend({
        routes : {
            "dashboard": "index",
        },

        index: function() {
            console.log('routing index route...');
            var x = new App.View.Dashboard({el:$('#main-content'), type:'other'});
        }
    });

    var initialize = function() {
        App.Router = new AppRouter;
        Backbone.history.start({pushState: true});
        console.log('Backbone is running...');
    };

    return {
        initialize : initialize
    };
});

А пока все мои представления наследуются от Backbone.View вот так:

App.View.Dashboard = Backbone.View.extend({

Я хочу создать свой собственный Base View, который будет расширять все представления из приложения. Это то, что я сделал до сих пор, но я не знаю, где разместить этот фрагмент кода, потому что в app.js я загружаю представление панели инструментов, поэтому мне нужно сделать это раньше, но мне нужно потребовать это базовое представление объект во всех представлениях... так что я потерялся :(

define(['backbone', 'underscore', 'twig'], function(Backbone, _){

    App.View.Base = Backbone.View.extend({});
    _.extends(App.View.Base.prototype, {
        initialize: function(params)
        {
            this.el = params.el;
            this.init(params);
        },

        init: function(params)
        {
        },

        renderTemplate:function(template_path, data)
        {
            var tpl = twig({href:template_path, async:false});

            // Inject variables
            data.user = App.Registry.User;
            data.account = App.Registry.Account;

            return tpl.render(data);
        }
    });

});

Любая идея или замечания приветствуются. Ответ был бы лучшим :D

Спасибо, Максим.


person maxwell2022    schedule 04.09.2012    source источник


Ответы (1)


person    schedule
comment
В итоге я сделал это по-другому, но этот ответ выглядит лучшим для моего вопроса;) - person maxwell2022; 05.09.2012