Новое свойство qooxdoo не отображается в инструменте журнала

Я проверяю экземпляр класса qooxdoo, используя console.log('%o', inst). Здесь свойства показаны с ведущими отметками "$$user...". Но при добавлении нового свойства в класс оно не отображается в выводе console.log. Код работает с использованием нового свойства; поэтому синтаксис и структура класса в порядке. Я проверил в режиме выпуска и отладки. Что мне нужно сделать, чтобы новое свойство появилось и в выходных данных console.log? Или что-то закешировано, поэтому оно не будет отображаться до определенного обновления?


person peterg    schedule 15.09.2016    source источник


Ответы (1)


Qooxdoo использует $$user_ для хранения текущего значения свойства, предоставленного пользователем. Значения $$user_ устанавливаются только в том случае, если свойство было активно установлено после создания свойств объекта во время инициализации класса.

Недостаточно иметь какое-то значение init, поэтому вам нужно что-то активно туда вставить, чтобы сделать их видимыми в вызове console.log выше.

Значения инициализации хранятся в прототипе как $$init_, за которым следует имя переменной. Так

qx.Class.define("foobar", {
  extend: qx.core.Object,

  properties: {
    test1 : {},
    test2 : {init: 5}
  }
});

не приведет ни к одному $$user_test1 или $$user_test2 сразу после инициализации класса. Если вы вызовете setTest2(99), вы увидите, что $$user_test2 появляется в консоли и исчезает, если вы вызываете resetTest2().

Чтобы ответить на вопрос: вы можете только принудительно установить значения $$user_, активно вставив что-то. Или лучше определить watch в консоли Chrome, который вызывает getTest2() для наблюдаемого объекта.

person Cajus Pollmeier    schedule 06.11.2016