[英]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.