0

是否可以从对象本身内部观察私有(下划线)属性?我需要知道 _view_layer 何时设置,以便我可以应用一些 jQuery 甚至处理程序。不幸的是 init() 和 render() 真的很早,所以 _view_layer 是未定义的。不幸的是,观察 _view_layer 似乎也不起作用。请告诉我我能做什么。基本上,如果有其他可能的解决方案,我也愿意看到

4

2 回答 2

2

在 Sproutcore 中,下划线只是属性/方法是私有的约定。它实际上并不是私人的。

在 Sproutcore 中,视图具有生命周期方法。这可能很有趣(取自 SC 1.4.5 代码):

  • didCreateLayer: render() 方法用于生成新的 HTML。
    覆盖此方法以在创建视图后对 DOM 执行任何其他设置。例如,如果您需要监听事件。

在 SC 1.6 及更高版本中,观点发生了巨大变化,但我相信这didCreateLayer仍然是公认的。

于 2011-06-17T14:10:45.033 回答
0
(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中调试时也可以使用。

于 2011-06-16T21:22:35.280 回答