是否可以从中观察私有(下划线)属性 在对象本身内? 我需要知道_view_layer何时被设置,以便我可以申请 一些jQuery甚至处理程序。不幸的是init()和render()都是 真的很早,所以_view_layer是未定义的。 不幸的是,观察_view_layer似乎也不行。 请告诉我我能做些什么。基本上,如果有另一种可能 解决方案,我很乐意看到它
答案 0 :(得分:2)
在Sproutcore中,下划线只是约定,属性/方法是私有的。它实际上并不是私人的。
在Sproutcore中,视图具有生命周期方法。这可能是有意义的(取自SC 1.4.5代码):
- didCreateLayer: render()方法用于生成新的HTML。
重写此方法以在DOM上执行任何其他设置 威力 创建视图后需要做的事情。例如,如果您需要 听 对于活动。
SC 1.6及更高版本的观点发生了巨大变化,但我相信didCreateLayer
仍然被认可。
答案 1 :(得分: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浏览器。
仅建议用于调试。在firefox中调试时也可以使用.watch
。