2013-03-12 3 views
2

Вот моя первая попытка передать пользовательские аргументы функции обработчика в extjs (4.0.1) в IE9. У меня есть код ниже, но он выдает сообщение об ошибке SCRIPT438: Object doesn't support property or method 'createDelegate'. Я не уверен, что я делаю неправильно. Пожалуйста помоги.Использование createDelegate в extjs

Js файл:

Ext.onReady(function() { 

    var appendBooleanOrInsertionIndex = 0; 
    var myButtonHandler = function(item,a, b, arg){ 
      alert(a + " "+ b); 
     }; 

var myButton = new Ext.Button({ 
     id : 'myButton', 
     //renderTo : 'mybutton', 
     text : 'Save', 
     handler : myButtonHandler.createDelegate(this, ['Hi', 'Kart'], appendBooleanOrInsertionIndex), 
     scope : this 
    }); 
}); 

ответ

5

Ext перестал добавлять логику для нативных прототипов класса в Ext 4. Используйте Ext.Function.bind или Ext.Function.pass.

+0

Hi..Thanks за ответ. Я попробовал как связывание, так и передачу, но получил ошибку SCRIPT438: Object не поддерживает свойство или метод «apply» в файле ext-all-debug.js. Не уверен, что это. Помощь Pls ... – CARTIC

+0

Как вы называете bind/pass? Это должно работать 'handler: Ext.Function.pass (myButtonHandler, ['Hi,' Kart '])'. Есть ли у вас какие-либо другие библиотеки, которые могли бы возиться с прототипом Array? – wantok

+0

Привет, я был настолько глуп, что пропустил запятую в синтаксисе функции, который привел к ошибке. Что ты сказал это правильно. Использование 'Ext.Function.pass' сделало трюк. Исправленный код в моем ответе. Большое спасибо. – CARTIC

0

исправленный код, как показано ниже:

Ext.onReady(function() { 


    var myButtonHandler = function(a, b){//alert("-->"); 
      alert(a + " "+ b); 
     }; 

     Ext.create('Ext.panel.Panel', { 
      renderTo: Ext.getBody(), 
      width: 800, 
      height: 300, 
      layout: 'column', 
      title: 'Container Panel', 
      //html: 'parent panel', 
      items: [ 
       { 
        xtype: 'button', 
        id: 'mbutton', 
        text : 'My Button', 
        handler : Ext.Function.pass(myButtonHandler, ['Hi', 'Kart!!!!']) 
       } 
      ] 
     }); 
}); 
Смежные вопросы