从我对 Flex 的一点经验中,我了解了可绑定变量,例如,文本元素的内容会随着变量的值而变化。
我想知道是否可以在 JavaScript 中做这样的事情。例如,假设我有一个<h1 id="big_title">
我想包含文档的标题。这可以很容易地完成document.getElementById('big_title').innerHTML = document.title;
,但是如果document.title
变化?我必须手动更新big_title
以及。
另一种说法是,有没有办法创建自定义onchange
- 类似于变量而不是 DOM 元素上的事件处理程序?该处理程序可以根据需要更新标题。
编辑:我知道我可以使用setInterval
检查变量“绑定”(在数组中定义)并根据需要进行更新,但这有点黑客行为,并且需要在响应能力和对性能的影响之间进行折衷。
您可以在大多数主要浏览器中“观看”对象。Here https://stackoverflow.com/questions/1759987/detect-variable-change-in-javascript是一个垫片。这个想法本质上是有一个设置器(在该示例中,它是名为handler
)当值改变时将被执行。我不确定浏览器支持的程度。
尽管说实话,拥有自己的 setter 方法听起来像是一个更简单的解决方案。要么将其变成一个对象(您可以轻松扩展此示例以使用通用的handler
而不是总是更改标题):
function Watchable(val) { // non-prototypal modelling to ensure privacy
this.set = function(v){
document.title=val=v;
};
this.get = function(){return val;};
this.set(val);
}
var title = new Watchable("original title");
title.get(); // "original title"
title.set("second title"); // "second title"
title.get(); // "second title"
或者,如果您不需要多次实例化,则可以使用简单的函数+约定:
function changeVal(newVal) {
variableToWatch = newVal;
// change some DOM content
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)