ExtJS4 - расширение различных компонентов из одного базового класса

StackOverflow https://stackoverflow.com//questions/20009807

  •  20-12-2019
  •  | 
  •  

Вопрос

У меня есть веб-приложение, для которого я использую extjs 4.2.Это приложение имеет кучу различных компонентов - панель, которая отображает некоторые данные, другая панель, которая отображает некоторые другие данные, сетку, диаграмму, и т. Д., ETC.

Требуется, что каждый компонент имеет минимум определенный набор функций и свойств.Поэтому я хотел бы определить класс компонента, который я могу продлить все остальное.Например:

Ext.define('MyApp.BaseComponent', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.myapp-basecomponent',

    prop1: true,
    prop2: 17,

    func1: function (a, b) {
        return a + b;
    }
});
.

Тогда я бы расширил каждый отдельный компонент в моем приложении из этого базового компонента класса.Проблема в том, что если я определим базовый компонент как расширение «Ext.Panel.panel», я могу только расширить другие панели из него.Я не могу продлить сетку, дерево и т. Д. От него.

Есть ли способ, которым я могу это сделать?Или я приближаюсь к этому неправильному способу?Может быть, я должен просто устанавливать все, что не является панелью (сеткой, диаграммой и т. Д.) На панели, чтобы все они могли продлить от базообразования?Совет очень ценится.

Это было полезно?

Решение

Если вы просто хотите увеличить класс базового компонента, вы всегда можете просто предоставить переопределение, которое добавляет их:

Ext.define('MyApp.AugmentComponent', {
    override: 'Ext.Component',

    a: 1,
    b: 2,

    fn1: function() {
    }
});
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top