繁体   English   中英

在Sproutcore中观察私有属性

[英]Observing private properties in Sproutcore

是否可以从对象本身内观察私有(强调的)属性? 我需要知道_view_layer何时被设置,以便我可以应用一些jQuery甚至处理程序。 不幸的是,init()和render()非常早,所以_view_layer是未定义的。 不幸的是,观察_view_layer似乎也不行。 请告诉我我能做些什么。 基本上,如果有另一种可能的解决方案,我也愿意看到这一点

在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浏览器。

仅建议用于调试。 在firefox中调试时也可以使用.watch

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM