Наблюдение за частной собственностью в Sproutcore - PullRequest
0 голосов
/ 17 июня 2011

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

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

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

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

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

Представления резко изменились в SC 1.6 и более поздних версиях, но я считаю, что didCreateLayer все еще распознается.

0 голосов
/ 17 июня 2011
(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.

...