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