Как выполнить функцию после создания элемента с помощью обработчика типов и RemoteObject?

Я хочу выполнить функцию `doAfterCreation()? после создания экземпляра CustomTextWidget. Как я могу это сделать?

function CustomTextWidget(properties) {
    var parent = rap.getObject(properties.parent);
    this.textMask = properties.textMask;

    this.maskedInput = document.createElement('input');
    this.maskedInput.setAttribute('class', 'megaClass');
    parent.append(this.maskedInput);
}

CustomTextWidget.prototype.setTextMask = function (data) {
    this.textMask= data;
};

rap.registerTypeHandler('com.example.CustomTextWidget', {
    factory: function(properties) {
        return new CustomTextWidget(properties);
    },
    properties: ['textMask']
});

function doAfterCreation() {
    // some code
}

person Paul    schedule 19.01.2016    source источник


Ответы (1)


Вы можете попробовать зарегистрировать свою функцию как слушателя render. Этот прослушиватель будет вызван после того, как все сообщение будет обработано, есть вероятность, что этот момент времени подходит для вашей цели. Чтобы выполнить функцию только один раз, она должна отменить регистрацию при вызове.

rap.registerTypeHandler('com.example.CustomTextWidget', {
  factory: function(properties) {
    rap.on('render', doAfterCreation);
    return new CustomTextWidget(properties);
  }
  ...

function doAfterCreation() {
  rap.off('render', doAfterCreation);
  // some code
}

Для получения более подробной информации вы можете ознакомиться с Справочник по веб-клиенту.

person ralfstx    schedule 19.01.2016
comment
У меня не работает. Я пытался заменить 'render' на rap.render, но это мне не помогло. - person Paul; 20.01.2016
comment
Извините, я опечатался в примере кода, это полная ерунда. Обновил, можно еще раз посмотреть? - person ralfstx; 21.01.2016