2015-06-25 1 views
0

У меня есть представление, которое является марионеткой ItemView. Я хотел бы получить доступ к другим параметрам в этом представлении, используя «this» внутри функции шаблона, но я получаю его как неопределенный, и я не уверен, почему.MarionetteJS - не может ссылаться на это в функции шаблона

define(['jquery', 'hbs!templates/template', 'backbone'], 
    function ($, template, Backbone) { 
     "use strict"; 

     return Backbone.Marionette.ItemView.extend({ 

      name: "Depth", 

      el: ".card", 

      template: function(serializedModel){ 
       var self = this; // self is undefined, so I can't reference this.name, which would be Depth 

       var data = {isDepth: true, cardTitle: self.name, injectHTML: template()}; 

       .... do some stuff ... 

       return template(); 
      } 
     }); 
    } 
); 

ответ

2

Вы можете использовать bindAll Underscore, чтобы привязать шаблон к вашему marionetteItem View-х это всякий раз, когда его называют. Так что-то вроде:

Backbone.Marionette.ItemView.extend({ 
    initialize: function(){ 
     _.bindAll(this, 'template'); 
    }, 
    template: function() { 
     //this refers to the parent object scope. 
    } 
}); 
3

Вы можете использовать templateHelpers для доступа пользовательских переменных в шаблоне:

templateHelpers:function(){ 
    return { 
     card_title: this.name 
    } 
} 
+0

Можете ли вы уточнить? Я новичок в marionette – SoluableNonagon

+0

Конечно, в функции помощников шаблона (метод представления) вы можете получить доступ к свойствам, привязанным к объекту вида. Проверьте обновленный ответ, это может дать вам больше понимания. Теперь вы можете получить доступ к свойству card_title непосредственно в шаблоне. – Trace

+0

спасибо за обновление. Теперь как мне получить доступ к вспомогательной функции шаблона в функции шаблона? – SoluableNonagon

 Смежные вопросы

  • Нет связанных вопросов^_^