title: Backbone.js view instance variables?
body: <p>I'm learning Backbone.js and am trying to figure out whether it's possible to have instance variables in Backbone views.</p>
  
  <p>My goal is to load a view's templates from an external file when a view is being instantiated. Currently I'm storing them in a global variable in the Backbone app's global namespace, but it would be cleaner to store the templates in a view's instance variables. Currently I have it set up like this:</p>
  
  <pre><code>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();
      }
  
  });
  </code></pre>
  
  <p>But instead of using "templates" being defined as a global var, I'd like to create 'templates' in a view's initialize function, along these lines (but this doesn't work):</p>
  
  <pre><code>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();
      }
  
  });
  </code></pre>
  
  <p>This is probably (?) pretty straightforward and/or obvious, but me being somewhere on the Backbone.js learning curve, I'd much appreciate any help with this!! Thanks!</p>