2013-08-29 2 views
0

У меня есть кнопку внутри зрения, и я установить свойство в действия его так, что я могу слушать его водопроводные события в контроллере следующегопараметра пропуска свойства действия с точкой зрения в сенче прикосновении

посмотреть код

{ 
    xtype:'button', 
    text:'SKIP', 
    action:'skip'  
} 

код контроллера

onSkipContact:function(){ 
     console.log('tap'); 
} 

теперь, что я хочу передать т Параметром к onSkipContact действия что-то вроде как следует

{ 
    xtype:'button', 
    text:'SKIP', 
    action:'skip(data.index)' //i want to pass the index of record to the controller  
} 

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

onSkipContact:function(index){ 
console.log('tap' + index); 
} 

панель, содержащая cv

Ext.define('ca.view.ContactInfoPanel',{ 

    extend:'Ext.Panel', 
    xtype:'contactinfopanel', 



    requires: [ 'ca.view.ContactInfo','ca.view.ContactVote'], 
    config:{ 

     layout:'vbox', 
     defaults: { 
        margin: '10 10 10 10' 
      } , 
     items:[{ 

      xtype:'contactinfo' 

     },{ 

      xtype:'contactvote', // its a CV 
     }] 


    }, 
    initialize:function(){ 


    this.callParent(); 

    } 



}); 

здесь является contactvote т.е. cv

Ext.define("ca.view.ContactVote",{ 

    extend:'Ext.Container', 
    xtype:'contactvote', 

    requires:['Ext.Button'], 

    config:{ 


     bottom:0, 
     width: '100%', 


      defaults: { 
        margin: '10 20 0 0' 
      } , 
     items:[{ 

         xtype:'button', 
         text:'SKIP', 
         action:'skip', 
         id:'skipbtn' 



       }] 


    }, 


    initialize:function(){ 


    console.log(this.data); 
    this.callParent(); 

    } 





}); 
+0

ваша единственная потребность установить указатель на кнопку от контроллера и нет другого компонента, использующего dat a .. правильно? – Viswa

+0

да, thts wht я хочу сделать – Hunt

+0

см. Мое обновление в моем ответе – Viswa

ответ

0

Сначала сохраните данные, которые вы хотите передать методу обработчика в самой кнопке. Например:

{ 
    xtype: 'button', 
    text: 'SKIP', 
    action: 'skip', 
    // Give it the name you want, just ensure it won't 
    // overlap a property defined by Ext. 
    dataIndex: data.index 
} 

Слушатели событий Ext всегда передают источник события (в вашем случае кнопку) в качестве своего первого аргумента. Таким образом, в обработчике, вы можете получить доступ к вашим данным таким образом:

onSkipContact: function(button) { 
    var index = button.index; 

    console.log('tap' + index); 
} 
+0

о, ваш быстрый человек – Viswa

+0

Lol.SO должен выпустить предупреждения «кто-то еще в настоящее время пишет точно то же самое, что и вы» ^^ – rixo

0

Попробуйте это, установите индекс в конфигурации кнопок

{ 
    xtype:'button', 
    text:'SKIP', 
    action:'skip', 
    index : data.index 
} 

В действии контроллера

onSkipContact:function(button){ 
    // You can get index config like this 
    console.log('tap' + button.index);  
} 

Я предположил, что ваш имеют следующую конфигурацию в контроллере

refs: { 
     skipBtn : 'button[action=skip]' 
    }, 
    control: { 
     skipBtn : { 
      tap: 'onSkipContact' 
     } 
    } 

Update

Попробуйте

this.getCv().down('button[action=skip]').index = record.data.index; 

вместо

this.getCV().setData(record.data) 

ваш код кнопки остаются

{ 
    xtype:'button', 
    text:'SKIP', 
    action:'skip' 
} 
+0

Вы тоже потеряли некоторое время, выяснив, что это за вариант действия, не так ли? – rixo

+0

@rixo no, я воспринял как свойство объекта кнопки – Viswa

+0

@ Viswa Я получаю 'this.data.index' или' data.index' undefine – Hunt

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