Определен ли Xtype
Есть необходимость узнать определен ли xtype, название которого известно. Так и не нашел этого в 4-м.
Есть форма, которая строится динамически и во избежание ошибок нужно проверить определен ли тип поля. Пример:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ExtJS4</title>
<link rel="shortcut icon" href="/favicon.ico">
<link rel="stylesheet" type="text/css" href="/libs/ext4/resources/css/ext-all-gray.css" /><link rel="stylesheet" type="text/css" href="/practice/css/testero.css" />
<script type="text/javascript" src="/libs/ext4/ext-all-debug.js"></script><script type="text/javascript" src="/libs/ext4/locale/ext-lang-ru.js"></script> <script>
function processItems(items){
var new_items = [];
if(Ext.isArray(items)){
for(var i = 0; i < items.length; i++){
//здесь нужна проверка на существование xtype
Ext.Array.include(new_items, items[i]);
}
}
return items;
}
var form_items = [
{xtype: 'textfield', name: 'fio', fieldLabel: 'ФИО'},
{xtype: 'textfield', name: 'email', fieldLabel: 'Email'}
];
Ext.onReady(function() {
var form = Ext.create('Ext.form.Panel', {
name: 'myloadform',
padding: '5 0 0 5',
frame: true,
region: 'center',
items: processItems(form_items)
});
Ext.create('Ext.container.Viewport', {
layout : 'border',
defaults: {
split: true,
collapsible: true,
collapseMode: 'mini',
hideCollapseTool: true
},
items : [
{
xtype: 'panel',
region: 'center',
layout: 'fit',
items: [
form
]
}
]
});
});
</script>
</head>
<body>
</body>
</html>
|
можно так проверить
<!DOCTYPE html>
<html>
<head>
<title>demo</title>
<script src='http://dev.sencha.com/deploy/ext-4.0.7-gpl/ext-all.js'></script>
<link rel="stylesheet" href="http://dev.sencha.com/deploy/ext-4.0.7-gpl/resources/css/ext-all.css">
<script>
function processItems(items){
var new_items = [];
if(Ext.isArray(items)){
for(var i = 0; i < items.length; i++){
//проверка на существование xtype
if (Ext.ClassManager.getByAlias('widget.' + items[i].xtype)) {
Ext.Array.include(new_items, items[i]);
}
}
}
return new_items;
}
var form_items = [
{xtype: 'textfieldxxxxx', name: 'fio', fieldLabel: 'ФИО'}, // здесь несуществующий xtype он не попадет в форму
{xtype: 'textfield', name: 'email', fieldLabel: 'Email'}
];
Ext.onReady(function() {
var form = Ext.create('Ext.form.Panel', {
name: 'myloadform',
padding: '5 0 0 5',
frame: true,
region: 'center',
items: processItems(form_items)
});
Ext.create('Ext.container.Viewport', {
layout : 'border',
defaults: {
split: true,
collapsible: true,
collapseMode: 'mini',
hideCollapseTool: true
},
items : [
{
xtype: 'panel',
region: 'center',
layout: 'fit',
items: [
form
]
}
]
});
});
</script>
</head>
<body></body>
</html>
|
Спасибо, помогло!) Бродил рядом с этим менеджером, но не прибавил к алиасу widget.
|
| Часовой пояс GMT +3, время: 23:02. |