Вызов методов шаблона жизненного цикла в ExtJS 4 - PullRequest
0 голосов
/ 31 мая 2011

В приведенном ниже примере кода я создал пользовательский компонент, который использует некоторые методы обратного вызова жизненного цикла, такие как onRender

Ext.onReady (function() {
Ext.define("Person", {
    extend: "Ext.Component",

    constructor: function (config) {
        this.initConfig(config),
        this.callParent();
        console.log("inside constructor");
        return this
    },

    onRender: function() {
        this.callParent(arguments);
        console.log("inside onRender");
    },
});

Ext.create('Person', {
    width:200, 
    height:300,
    html: "hello world",
    renderTo: Ext.getBody()
});

});

Вывод: "inside constructor"

Похоже, методы жизненного цикла onRender не вызывается.Также "привет мир" не отображается.

Что я делаю не так?

1 Ответ

1 голос
/ 31 мая 2011

я не знаю, что именно ответ .. но я пытаюсь ответить на него, пожалуйста, поправьте меня, если я ошибаюсь ..

Насколько я знаю, callparent() используется для вызова функции в родительском объекте, этой функции может потребоваться передать параметр, и в этом случае конструктору нужен массив для передачи ...

Ext.onReady (function() {
    Ext.define("Person", {
        extend: "Ext.Component",

        constructor: function (config) {
            //this.initConfig(config),
            this.callParent([config]);
            console.log("inside constructor");
            //return this
        },

        onRender: function() {
            this.callParent(arguments);
            console.log("inside onRender");
        },
    });

    Ext.create('Person', {
        width:200, 
        height:300,
        html: "hello world",
        renderTo: Ext.getBody()
    });

});

this.callParent([config]); это означает вызов родителя с параметром config или этой областью действия. Итак, onRender функция в Ext.component перезаписывается вашим onRender ...

...