2015-07-23 1 views
0

Здесь я пытаюсь добавить простую панель инструментов со встроенной кнопкой, а после этого - список некоторых элементов. Я хочу, чтобы этот список сортировался, как только я нажимаю кнопку сортировки.Sencha Touch: недействительный элемент определен

Ниже приведен код вид:

Ext.define('UtilApp.view.Main', { 
 
    extend: 'Ext.Container', 
 
    xtype: 'main', 
 
\t \t 
 
\t initialize: function(){ 
 
\t \t this.callParent(arguments); 
 
\t \t var Arr = new Array("Banana", "Apple", "Orange", "Peach", "Guava", "Pine", "Dates"); \t \t 
 
\t \t var sortButton = { 
 
\t \t \t xtype: 'button', 
 
\t \t \t text: 'sort', 
 
\t \t \t handler: this.sorter(Arr) 
 
\t \t }; 
 
\t \t \t \t 
 
\t \t var toolbar = { 
 
\t \t \t xtype: 'toolbar', 
 
\t \t \t title: Ext.Date.DAY, 
 
\t \t \t docked: 'top', 
 
\t \t \t items : [sortButton] 
 
\t \t }; 
 
\t \t 
 
\t \t 
 
\t \t var list = Ext.create('Ext.List', { 
 
\t \t \t fullscreen: true, 
 
\t \t \t itemTpl: '{title}', 
 
\t \t \t data: [ 
 
\t \t \t {title: Arr[0]}, 
 
\t \t \t {title: Arr[1]}, 
 
\t \t \t {title: Arr[2]}, 
 
\t \t \t {title: Arr[3]}, 
 
\t \t \t {title: Arr[4]}, 
 
\t \t \t {title: Arr[5]}, 
 
\t \t \t {title: Arr[6]} 
 
\t \t \t ] 
 
\t \t }); 
 
\t \t 
 
\t \t 
 
\t \t console.log("List Created!"); 
 
\t \t 
 
\t \t this.add([toolbar, list]); 
 
\t }, 
 
\t 
 
\t sorter: function(Arr, toolbar, list){ 
 
\t \t console.log("Starting sort"); 
 
\t \t var sortedArray = Ext.Array.sort(Arr); 
 
\t \t console.log(sortedArray); 
 
\t \t console.log("Sorted"); 
 
\t \t this.add([this.toolbar, this.list]); 
 
\t \t console.log("added"); 
 
\t } 
 
});

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

initialize: function(){ 
    this.callParent(arguments); 
    var Arr = new Array("Banana", "Apple", "Orange", "Peach", "Guava", "Pine", "Dates");   
    var sortButton = { 
     xtype: 'button', 
     text: 'sort', 
     handler: this.sorter(Arr) 
    }; 

    var toolbar = { 
     xtype: 'toolbar', 
     title: Ext.Date.DAY, 
     docked: 'top', 
     items : [sortButton] 
    }; 


    var list = Ext.create('Ext.List', { 
     fullscreen: true, 
     itemTpl: '{title}', 
     data: [ 
     {title: Arr[0]}, 
     {title: Arr[1]}, 
     {title: Arr[2]}, 
     {title: Arr[3]}, 
     {title: Arr[4]}, 
     {title: Arr[5]}, 
     {title: Arr[6]} 
     ] 
    }); 


    console.log("List Created!"); 

    this.add([toolbar, list]); 
}, 

sorter: function(Arr, toolbar, list){ 
    console.log("Starting sort"); 
    var sortedArray = Ext.Array.sort(Arr); 
    console.log(sortedArray); 
    console.log("Sorted"); 
    this.add([this.toolbar, this.list]); 
    console.log("added"); 
} 

});


Я получаю ошибку следующим образом:

Uncaught Ошибка: [ERROR] [Ext.Container # добавить] Недопустимый элемент Дано: не определено, должно быть либо объект конфигурации на заводе новый элемент или экземпляр существующего компонента

Этот список не отображается на экране, если я удаляю этот обработчик. Я не мог понять, что означает ошибка, поскольку я новичок в сенчане, а также Ext.js. Пожалуйста помоги.

ответ

0

Прежде всего то, что я определяю обработчик кнопки, неверно. Это фактически вызов функции сортировщика. Таким образом, правильное определение обработчика должно быть следующим:

handler: this.sorter.bind(this, Arr, true) 

Таким образом, функция сортировки определяется для обработчика кнопки, а также мы можем передать параметры функции.

Вторая и основная проблема с этим кодом заключается в том, что я не могу написать код js внутри значения для свойства config, как я сделал для панели инструментов xtype. Таким образом, значение для заголовка должно быть заменено строкой или может быть обновлено с помощью функции setter.

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

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