2011-08-01 1 views
0

Я написал программу в sencha, которая отлично работала. Поскольку мои файлы становятся слишком большими, я пытаюсь разбить их на несколько небольших файлов, используя xtypes.Непринято Попытка создать компонент со статусом xtype, который еще не был зарегистрирован:

В принципе, я пытаюсь иметь один файл main.js Вызов xtype list.js вызов другой xtype details.js также вызывая необходимые xtypes ...

Моя проблема заключается в том, что с тех пор я начал разделять мой код, я получаю эту ошибку: Uncaught Attempting to create a component with an xtype that has not been registered.

Я уверен, что каждый файл правильно связан в моем index.html.

Вот пример моего кода:

Details.js

var details = Ext.extend(Ext.Panel, { 
layout: 'card', 
cardSwitchAnimation: 'slide', 

initComponent: function(){ 
    Ext.apply(this,{ 
     items:[] 
    }) 
    details.superclass.initComponent.apply(this,arguments); 
} 
}); 
Ext.reg('details', details); 

List.js

var Details = {xtype: 'details'}; 

var ListWrapper = new Ext.Panel({ 
id: "listwrapper", 
layout: 'fit', 
items: [List], 
dockedItems: [homeTitleBar] 
}); 

var Home = new Ext.Panel({ 
id: "home", 
layout: 'card', 
cardSwitchAnimation: 'slide', 
items: [ListWrapper, Details] 
}); 

var HomeTab = Ext.extend(Ext.Panel, { 
iconCls: 'home', 
title: 'Home', 
layout: 'card', 
initComponent: function() { 
    Ext.apply(this,{ 
     items: [Home] 
    }); 
    HomeTab.superclass.initComponent.apply(this,arguments); 
} 
}); 
Ext.reg('home', HomeTab); 

Main.js

var menuBar = Ext.extend(Ext.TabPanel, { 
layout: 'card', 
cardSwitchAnimation: 'slide', 
fullscreen: true, 
tabBar: { 
    dock: 'bottom', 
    layout: {pack: 'center'} 
}, 
items:[ 
    {xtype: 'home'} 
] 
}); 
Ext.reg("menuBar", menuBar); 

ответ

0

Проверьте порядок ваш <script> теги. Похоже, что вы загружаете файлы в неправильном порядке (возможно, main.js перед list.js или list.js перед details.js).

Я бы использовал только Ext.reg, если вы собираетесь повторно использовать свои определенные компоненты, в вашем случае это похоже, что вы просто используете их один раз, поэтому вам нечего выиграть, и вы могли бы просто передать компонент, чем избыточный дополнительный Object + xtype