簡體   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