2015-11-11 1 views
0

Есть несколько вопросов об этом, которые работают, но не в моем сценарии. Я хочу вызвать функцию, определенную в моем представлении суперкласса, вместо вызова функции в самом элементе itemTpl.
I've что-то подобное в itemTpl:Как вызвать функции VIEW в XTemplate (itemTpl)

'<span class="x-button-label" style="" id="ext-element-115">{[this.getTranslation("textcodestr", "Text by default")]}</span>', 

И потом, у меня эту функцию в конфигурации itemTpl.

   getTranslation: function (textCode, defaultText) { 
        var store = Ext.getStore('TranslationsStore'); 
        var index = store.findExact('TextCode', textCode) 
        if (index > -1) { 
         return store.getAt(index).data.TextTranslated; 
        } 
        return defaultText; 
       } 

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

Есть ли способ сделать это?

Спасибо!
Milton

ответ

0

Мне удалось решить его с помощью помощника Singleton, который я могу вызвать из itemTpl.

Ext.define('MyApp.util.Shared', { 
singleton : true, 

getTranslation: function (textCode, defaultText) { 
    var store = Ext.getStore('TranslationsStore'); 
    var index = store.findExact('TextCode', textCode) 
    if (index > -1) { 
      return store.getAt(index).data.TextTranslated; 
    } 
    return defaultText; 
}}); 

Затем в itemTpl

'<span class="x-button-label" style="" id="ext-element-115">{[MyApp.util.Shared.getTranslation("textcodestr", "Text by default")]}</span>', 

HTH!
Milton.