Невозможно вызвать метод 'substring' из неопределенного - PullRequest
1 голос
/ 06 июня 2011

Вот мой код:

Ext.define('Ext.app.Portal', {
    extend: 'Ext.container.Viewport',

    uses: ['Ext.app.PortalPanel', 'Ext.app.PortalColumn', 'Ext.app.GridPortlet', 'Ext.app.ChartPortlet'],

    getTools: function () {
        return [{
            xtype: 'tool',
            type: 'gear',
            handler: function (e, target, panelHeader, tool) {
                var portlet = panelHeader.ownerCt;
                portlet.setLoading('Working...');
                Ext.defer(function () {
                    portlet.setLoading(false);
                }, 2000);
            }
        }];
    },

    initComponent: function () {
        var content = '<div class="portlet-content">' + Ext.example.shortBogusMarkup + '</div>';

        Ext.apply(this, {
            id: 'app-viewport',
            layout: {
                type: 'border',
                padding: '0 5 5 5'
            }, //eo layout
            items: [{ //app-header : item 1 of app-viewport
                id: 'app-header',
                xtype: 'box',
                region: 'north',
                height: 40,
                html: 'My Portal'
            }, { //container : item 2 of app-viewport
                xtype: 'container',
                region: 'center',
                layout: 'border',
                items: [{ //app-options: item 1 of container
                    id: 'app-options',
                    title: 'Options',
                    region: 'west',
                    animCollapse: true,
                    width: 200,
                    minWidth: 150,
                    maxWidth: 400,
                    split: true,
                    collapsible: true,
                    layout: 'accordion',
                    layoutConfig: {
                        animate: true
                    },
                    items: [{ //portal: item 1 of app-options

                        title: 'portal',
                        autoScroll: true,
                        border: false,
                        iconCls: 'nav'
                    }, { //settings : item 2 of app-options
                        title: 'Settings',
                        html: '<div class="portlet-content">' + 'details ??' + '</div>',
                        border: false,
                        autoScroll: true,
                        iconCls: 'settings'
                    }] //eo items app-options
                }, { //item 2 of container    
                    id: 'app-portal',
                    xtype: 'tabpanel',
                    activeTab: 0,
                    region: 'center',
                    items: [{
                        title: 'tab1',
                        layout: 'column',
                        html: 'this is the first tab',
                        closable: true
                    }, {
                        title: 'tab2',
                        closable: true
                    } //eo tab2
                    ] //eo items tabpanel

                }]
            }] //eo   app-portal
        }); //eo apply

        this.callParent(arguments);
    },

    onPortletClose: function (portlet) {
        this.showMsg('"' + portlet.title + '" was removed');
    },

    showMsg: function (msg) {
        var el = Ext.get('app-msg'),
            msgId = Ext.id();

        this.msgId = msgId;
        el.update(msg).show();

        Ext.defer(this.clearMsg, 3000, this, [msgId]);
    },

    clearMsg: function (msgId) {
        if (msgId === this.msgId) {
            Ext.get('app-msg').hide();
        }
    }

});

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

6 голосов
/ 08 декабря 2011

Для тех, кто может видеть «Невозможно вызвать метод 'substring' из неопределенного», когда я вижу это, это обычно из-за проблемы с поиском псевдонима.Обычно плохой xtype.Например, если я использую xtype: 'img' вместо xtype: 'image'.Я отлаживаю это, просматривая трассировку стека для «instantiateByAlias» и просматривая аргументы для этого вызова.Одним из них является конфиг с проблемным xtype в нем.

3 голосов
/ 07 июня 2011

сначала ... я попытался скопировать ваш код и заменить его на пример портала, ...
я не получил вашу ошибку, нет ошибки substring, но я получил ошибку в tabpanel части .. я думаю, ошибка в том, что uses config (это потому, что substrin, можно найти в classes.js ) ..

в портале, они используют Ext.app.PortalPanel, Ext.app.PortalColumn, Ext.app.GridPortlet и Ext.app.ChartPortlet,
но в вашем скрипте вы его не используете .. просто удалите uses part,
тебе это не нужно, тебе просто нужна табульная панель

секунда, см. classes.js файл, в котором нет определения табуляции ...
если вы хотите манипулировать порталом без границ ..
используйте ext-all.js вместо ext-core ..

изменить это:

<script type="text/javascript" src="../../builds/ext-core.js"></script>
<script type="text/javascript" src="../shared/examples.js"></script>
<script type="text/javascript" src="classes.js"></script>
<script type="text/javascript" src="portal.js"></script>

к этому

<script type="text/javascript" src="../../bootstrap.js"></script>
<script type="text/javascript" src="../shared/examples.js"></script>
<script type="text/javascript" src="portal.js"></script>
0 голосов
/ 21 марта 2012

таты правильные Обычно плохой тип.Например, если я использую xtype: 'img' вместо xtype: 'image'.вызовет это.

...