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