Использование функций-членов в Sench Touch List itemTpl - PullRequest
3 голосов
/ 28 сентября 2011

В документации по List упоминается, что itemTpl следует синтаксису XTemplate.

Я хотел бы использовать функции-члены в моем itemTpl

Если я инициализирую itemTpl с помощью XTemplate и что функция-член имеетбез аргументов это работает:

            items: {
            xtype: 'list',
            store: myStore,
            itemTpl: new Ext.XTemplate('<i>{name} {[this.hello()]}</i>', {
                hello: function () {
                    return 'Hello';
                }
            })

Но как только я пытаюсь передать аргумент (как в двух примерах ниже), он больше не работает:

            items: {
            xtype: 'list',
            store: myStore,
            itemTpl: new Ext.XTemplate('<i>{name} {[this.helloWorld(name)}</i>', {
                helloWorld: function (name) {
                    return 'Hello ' + name;
                }
            })


        items: {
            xtype: 'list',
            store: myStore,
            itemTpl: new Ext.XTemplate('<i>{name} {name:helloWorld}</i>', {
                helloWorld: function (string) {
                    return 'Hello ' + name;
                }
            })

TypeError: 'undefined 'не является функцией (оценивает' fm.helloWorld (values ​​['name']) ')

Думаю, мне не следует создавать новый объект Ext.XTemplate.Есть ли какое-либо решение для передачи функций-членов без создания отдельного XTemplate?

Или я должен отказаться от списка и сам построить список в шаблоне?

Ответы [ 3 ]

6 голосов
/ 30 сентября 2011

Следующий код должен работать:

items: {
    xtype: 'list',
    store: myStore,
    itemTpl: new Ext.XTemplate(
         '<i>{name} {[this.helloWorld(values.name)]}</i>', 
         {
             compiled: true,
             helloWorld: function (name) {
                 return 'Hello ' + name;
             }
         })
}

Ваш первый пример будет работать, с values.name вместо name

0 голосов
/ 23 августа 2012

Это использование также нормально:

itemTpl :new Ext.XTemplate( '<section class="movieListItem">',
                    '<img src="{UserLogo:this.showLogo}"/>',
                    '<h1>{NickName}</h1>',
                    '<div>{Content}</div>',
                    '</section>',
                    {
                        showLogo:function(value){

                            } 

                });
0 голосов
/ 29 сентября 2011

Использование {[this.helloWorld(name)} вместо {[this.helloWorld(values.name)}

...