Переменные экземпляра представления Backbone.js?

Я изучаю Backbone.js и пытаюсь выяснить, возможно ли иметь переменные экземпляра в представлениях Backbone.

Моя цель - загрузить шаблоны представления из внешнего файла при создании экземпляра представления. В настоящее время я храню их в глобальной переменной в глобальном пространстве имен приложения Backbone, но было бы проще хранить шаблоны в переменных экземпляра представления. В настоящее время у меня это настроено следующим образом:

var templates = {};

MessageView = Backbone.View.extend({

    initialize: function() {
        $.get('js/Test2Templates.tpl', function(doc) {

            var tmpls = $(doc).filter('template');

            templates['MessageView'] = [];

            tmpls.each(function() {
                templates.MessageView[this.id] = $.jqotec($.unescapeHTML(this.innerHTML));
            });
        });
    },

    render: function() {
        var tpldata = {name: 'Ville', thing: 'Finland'};
        $('#display').jqoteapp(templates.MessageView.greeting_template, tpldata);
    },

    events: {
        "click input[type=button]": "additionalTransactions"
    },

    additionalTransactions: function() {
        this.render();
    }

});

Но вместо использования «шаблонов», определяемых как глобальная переменная, я хотел бы создать «шаблоны» в функции инициализации представления в соответствии с этими строками (но это не work):

MessageView = Backbone.View.extend({

    view_templates: {},

    initialize: function() {
        $.get('js/Test2Templates.tpl', function(doc) {

            var tmpls = $(doc).filter('template');

            tmpls.each(function() {
                this.view_templates[this.id] = $.jqotec($.unescapeHTML(this.innerHTML));
            });
        });
    },

    render: function() {
        var tpldata = {name: 'Ville', thing: 'Suomi'};
        $('#display').jqoteapp(this.view_templates.greeting_template, tpldata);
    },

    events: {
        "click input[type=button]": "additionalTransactions"
    },

    additionalTransactions: function() {
        this.render();
    }

});

Это, вероятно (?) довольно просто и / или очевидно, но я нахожусь где-то на кривой обучения Backbone.js, я был бы очень признателен за любую помощь с этим !! Спасибо!

13
задан mu is too short 9 December 2013 в 23:44
поделиться