Наблюдение за частной собственностью в Sproutcore

Можно ли наблюдать частные (подчеркнутые) свойства изнутри самого объекта? Мне нужно знать, когда _view_layer устанавливается, чтобы я мог применить некоторые обработчики jQuery. К сожалению, init() и render() действительно ранние, поэтому _view_layer не определен. К сожалению, наблюдение _view_layer, похоже, тоже не работает. Пожалуйста, скажите мне, что я могу сделать. В принципе, если есть другое возможное решение, я открыт, чтобы увидеть это также

2 ответа

Решение

В Sproutcore подчеркивание является лишь условием, что свойство / метод является частным. Это на самом деле не личное.

В Sproutcore представления имеют методы жизненного цикла. Это может быть интересно (взято из кода SC 1.4.5 в поле зрения):

  • didCreateLayer: метод render() используется для генерации нового HTML.
    Переопределите этот метод, чтобы выполнить любые дополнительные настройки DOM, которые вам могут понадобиться после создания представления. Например, если вам нужно слушать события.

Взгляды сильно изменились в SC 1.6 и позже, но я считаю, что didCreateLayer до сих пор признается.

(function() {
  var value = obj._view_layer;
  delete obj._view_layer;
  var callback = function() {
    /* observation logic */
  }
  Object.defineProperty(obj, "_view_layer", {
    get: function() {
      return value;
    },
    set: function(val) {
      value = val;
      callback(val);
    },
    writable: true, 
    enumerable: true

  });
})();

Требуется браузер ES5.

Рекомендуется использовать только для отладки. Вы также можете использовать .watch при отладке в Firefox.

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