Sencha: Uncaught TypeError: Object function () {h.apply (this, arguments)} не имеет метода setActiveItem - PullRequest
0 голосов
/ 28 июля 2011

Я использую следующий код в своем приложении в качестве xtype. Мой элемент списка отображается так, как я хочу, но когда я нажимаю на элемент, у меня появляется эта ошибка каждый раз, когда я нажимаю на элемент, который должен загрузить новую страницу с данными: Uncaught TypeError: Object function () {h.apply (this , arguments)} не имеет метода setActiveItem. Любая идея, как я могу это исправить? Строки ссылочных позиций комментируются в коде.

Вот мой код:

var AppsBack = new Ext.Toolbar({
dock: 'top',
items: [{
    text: 'back',
    ui: 'back',
    handler: function(){
        Home.setActiveItem('home'); //Here is the second problem
    }
}]
});

var AppsDetails = new Ext.Panel({
id: "appsdetails",
tpl: "{game}",
dockedItems: [AppsBack]
});

var AppsList = new Ext.List({
id: "appslist",
store: AppsStore,
layout: 'card',
emptyText: "No game found",
itemTpl: "{game}",
listeners: {
    itemtap: function(view, index, item, e) {
        var rec = view.getStore().getAt(index);
        AppsDetails.update(rec.data);
        AppsBack.setTitle(rec.data.game);
        Home.setActiveItem('appsdetails') //Here is the first problem
    }
}
});

var AppsListWrapper = new Ext.Panel({
id: "appslistwrapper",
layout: 'card',
items: [AppsList],
dockedItems: []
});

var Home = Ext.extend(Ext.Panel, {
id: "home",
iconCls: 'home', 
title: 'Home',
fullscreen: true,
layout: 'card',
cardSwitchAnimation: 'slide',

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

Спасибо за вашу помощь


После пары манипуляций я обнаружил, что единственная причина, по которой я испытываю эту проблему, заключается в том, что я пытаюсь расширить панель. Другими словами, если я использую новая Ext.Panel intead of Ext.extend (Ext.Panel, {... все работает отлично, за исключением я не могу использовать xtype в этом случае. Есть идеи?

1 Ответ

0 голосов
/ 29 июля 2011

Я понял это !!!МОЕ решение состоит в том, чтобы дать новому расширенному классу как можно меньше аргументов.Поэтому я разделил домашний расширенный класс на два объекта:

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

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);

Не спрашивайте меня, как получилось, я не смогу ответить.Я просто следовал своей интуиции;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...