extjs используя методы up и down
Я пытаюсь использовать up
а также down
позвонить, а не Ext.getCmp
но я не совсем понимаю это. У меня есть этот код
listeners: {
'change': function(field, selectedValue) {
// Ext.getCmp('wildAnimal').setValue(selectedValue);
this.up('form').down('#wildAnimal').setValue(selectedValue);
}
}
внутри этого большего кода
Ext.define('ryan', {
constructor: function() {
Ext.create('Ext.form.Panel', {
bodyStyle: {"background-color":"green"},
name: 'mypanel',
title: 'Animal sanctuary, one animal per location ',
width: 300,
bodyPadding: 10,
test: 'mycat',
style: 'background-color: #Fdd;',
renderTo: Ext.getBody(),
items: [{
itemId: 'button1',
xtype: 'button',
text: 'click the button',
handler: function() {
alert('(<^_^>)');
}
},{
itemId: 'wildAnimal',
xtype: 'textfield',
fieldLabel: 'animal:',
name: 'myanimal'
},{
itemId: 'myCombo',
xtype: 'combo',
fieldLabel: 'choose your animal',
store: animals,
queryMode: 'local',
displayField: 'name',
listeners: {
'change': function(field, selectedValue) {
// Ext.getCmp('wildAnimal').setValue(selectedValue);
this.up('form').down('#wildAnimal').setValue(selectedValue);
}
}
}]
});
}
});
var animals = Ext.create('Ext.data.Store', {
fields: ['itemId', 'name'],
data: [{
"itemId": 'mycat',
"name": "mycat"
},{
"itemId" : 'mydog',
"name": "mydog"
},{
'itemId' : 'sbBarGirls',
"name": "BarGirls-when-drunk"
}]
});
Ext.onReady(function() {
var a = Ext.create('ryan');
var b = Ext.create('ryan');
});
Что меня смущает, так это зачем мне нужен хэштег в wildAnimal
чтобы это заработало. Также, когда я переключаюсь Ext.form.Panel
в widget.window
код слушателей перестает работать. Мой код создает окно, но я не могу передать значение поля со списком, как я могу, когда это панель формы. Как я понимаю up
используется, чтобы найти материал из родительского класса. При использовании widget.window
мне звонить this.up(widget)
? Я не могу заставить это работать. Кроме того, я очень плохо знаком с Ext JS, поэтому многие вещи могут возникнуть у меня в голове>__<.
3 ответа
up
а также down
методы используются для обхода дерева компонентов.
Когда используешь up
а также down
при использовании селекторов селектор по умолчанию проверяет тип x компонента. Так up('form')
означает "продолжай идти вверх по дереву компонентов, пока не найдешь форму". #wildAnimal
Селектор означает "продолжайте идти вверх, пока не найдете компонент, где id == 'wildAnimal'". Если вы используете up()
без селекторов возвращает родительский контейнер.
Если вы решили использовать Ext.window.Window
вместо Ext.form.Panel
вам нужно будет изменить все вхождения up('form')
с up('window')
, В противном случае, если вы знаете, что "myCombo" и "wildAnimal" являются компонентами одного уровня, вы можете просто использовать up().down('#wildAnimal')
и он будет работать после изменения типа родительского контейнера.
Симоника методов up и down соответствует классу ComponentQuery. Настоятельно рекомендую прочитать документацию по API по этому вопросу. А также смотрите ниже для начала работы с ExtJS.
Удачи!
Я просто собираюсь оставить это здесь для вас.
Это список начальных ресурсов, который я собрал для своих коллег: очевидно, ссылки на ExtJS4.1, но вы можете свободно использовать их для последней версии.
API: http://docs.sencha.com/ext-js/4-1/
Примеры: http://dev.sencha.com/deploy/ext-4.1.0-gpl/examples/
Руководства: http://docs.sencha.com/ext-js/4-1/
Ресурсы:
Форум Сенчи: http://www.sencha.com/forum/
Stackru: https://stackru.com/questions/tagged/extjs
Инструменты:
Firebug Plugin (Подсветка для разработчиков)
http://www.illuminations-for-developers.com/
С чего начать
1. Scroll through the Examples to get ideas of what you want to build.
2. Read through these Guides :
○ Getting Started
○ Class System
○ MVC
○ Layouts
○ Components
○ Data Package
Как только вы ознакомитесь с этими понятиями, решите, какие компоненты вы будете использовать, и более подробно рассмотрите конкретные руководства в разделе "Компоненты". Я бы также посоветовал прочитать учебники по архитектуре приложений.
У меня были проблемы с использованием Ext.getCmp("id")
так что лучшее решение кажется Ext.up/down()
и очень хорошо объяснил в этой теме:
https://www.sencha.com/forum/showthread.php?258048-Clarify-getCmp-vs-Up-down,
Надеюсь, это поможет всем, кто, кажется, не понимает этого.