2015-06-29 3 views
0

Я хочу знать, есть ли способ доступа к набору функций-членов XTemplate? Я расширяю представление и хочу переопределить XTemplate, но хочу сохранить функции-члены родительского XTemplate.Sencha Touch 2: Расширение XTemplate - могу ли я наследовать функции членов-родителей?

Вот пример - мой базовый класс:

Ext.define('my.view', { 

xtype: 'myview', 

config: { 

    itemTpl: new Ext.XTemplate(
    [ 
      '<p>Name: {name}</p>', 
      '<p>Kids: ', 
      '<tpl for="kids">', 
       '<tpl if="this.isGirl(name)">', 
        '<p>Girl: {name} - {age}</p>', 
       '</tpl>', 
       // use opposite if statement to simulate 'else' processing: 
       '<tpl if="this.isGirl(name) == false">', 
        '<p>Boy: {name} - {age}</p>', 
       '</tpl>', 
       '<tpl if="this.isBaby(age)">', 
        '<p>{name} is a baby!</p>', 
       '</tpl>', 
      '</tpl></p>' 
    ].join(""), 
    { 
     // XTemplate configuration: 
     compiled: true, 
     // member functions: 
     isGirl: function(name){ 
      return name == 'Sara Grace'; 
     }, 
     isBaby: function(age){ 
      return age < 1; 
     } 
    } 
    ); 
    } 
}); 

, что "ребенок" должен в основном выглядеть следующим образом:

Ext.define('my.subview', { 

xtype: 'myview', 

extend: 'my.view', 

config: { 

    itemTpl: new Ext.XTemplate(
    [ 
      '<p>Something completely different here</p>' 
    ].join(""), 
    //this.superclass.getMemberFunctions() 
    ); 
    } 
}); 

Thnaks заранее!

ответ

1

Вы не можете сделать это так, как вы описали, но, возможно, вы можете использовать альтернативный подход.

Вместо того, чтобы ожидать, что XTemplate наследует функциональность (что-то, на чем я не уверен, что это может сделать), просто определите свойства/функции-члены где-нибудь, где вы можете их повторно использовать. Например:

Ext.define('my.view', { 
    xtype: 'myview', 

    config: { 
     xtemplateStuff : { 
      // XTemplate configuration: 
      compiled: true, 

      // member functions: 
      isGirl: function(name){ 
       return name == 'Sara Grace'; 
      }, 
      isBaby: function(age){ 
       return age < 1; 
      } 
     } 
    }, 

    initialize : function() { 
     this.setItemTpl(new Ext.XTemplate([ 
      'stuff...', 
      this.getXtemplateStuff() 
     ])); 
    } 
}); 

И потому, что что-то в config будет наследоваться, вы можете сделать это с точки зрения ребенка:

Ext.define('my.subview', { 
    extend: 'my.view', 

    initialize : function() { 
     this.setItemTpl(new Ext.XTemplate([ 
      'different stuff...', 
      this.getXtemplateStuff() 
     ])); 
    } 
}); 

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

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