Ext JS: переопределение Ext.Array.merge внутри initComponent

Как я могу изменить / переопределить порядок Ext.Array.merge внутри initComponent в дочернем классе?

Это дает ошибку, когда я override порядок внутри дочернего класса, и когда я просто extend базовую панель, он все еще использует тот же порядок merge в базовом классе.

Некоторые фрагменты:

Ext.define('MyApp.BasePanel', {
extend: 'Ext.panel.Panel',
    initComponent: function () {
        var me = this;

        me.items = Ext.Array.merge(me.firstFunc(), me.secondFunc(), me.thirdFunc());

        me.callParent(arguments)
    },

    firstFunc: function () {
        return [];
    },

    secondFunc: function () {
        return [];
    },

    thirdFunc: function () {
        return [];
    },

В этом случае мне нужно вызвать как;

me.items = Ext.Array.merge(me.secondFunc(), me.firstFunc(), me.thirdFunc());

Я пытался переопределить базовый класс, но он дает Synch. Ошибка загрузки;

Ext.define('MyApp.SubPanel', {
    override: 'MyApp.BasePanel',
        initComponent: function () {
            var me = this;

            me.items = Ext.Array.merge(me.secondFunc(), me.firstFunc());

            me.callParent(arguments)
        },

        secondFunc: function () {
            return [];
        },

        firstFunc: function () {
            return [];
        },


// Error: [W] [Ext.Loader] Synchronously loading 'MyApp.SubPanel'; consider adding Ext.require('MyApp.SubPanel') above Ext.onReady
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
171
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Даже если вы переопределите его, как вы описали, callParent () просто уничтожит все, что делает ваш подкласс. Предоставьте шаблонный метод в качестве ловушки:

Ext.define('MyApp.BasePanel', {
    extend: 'Ext.panel.Panel',
    initComponent: function() {
        this.items = this.setupItems();
        this.callParent();
    },

    setupItems: function() {
        return Ext.Array.merge(me.firstFunc(), me.secondFunc(), me.thirdFunc());
    },

    firstFunc: function() {
        return [];
    },

    secondFunc: function() {
        return [];
    },

    thirdFunc: function() {
        return [];
    }
});

Ext.define('MyApp.SubPanel', {
    extend: 'MyApp.BasePanel',

    setupItems: function() {
        return Ext.Array.merge(me.secondFunc(), me.firstFunc(), me.thirdFunc());
    }
});

такое прекрасное решение и работает совершенно хорошо. Большое спасибо.

Nuri Engin 07.04.2018 13:02

Другие вопросы по теме