Javascript 仅在触发另一个事件后才触发该事件
我有一个带有缩放控件的GeoExt地图面板。当我地图上的图层“超出范围”时,我真的想禁用树面板中的一些节点,也就是说,它们的Javascript 仅在触发另一个事件后才触发该事件,javascript,extjs,openlayers,Javascript,Extjs,Openlayers,我有一个带有缩放控件的GeoExt地图面板。当我地图上的图层“超出范围”时,我真的想禁用树面板中的一些节点,也就是说,它们的setVisibility设置为false。我有我的zoomend事件工作,我还有一个checkchange事件工作,但是,如果用户将zoombar推到多个级别,则checkchange事件会得到多次评估,而另一个问题是,即使zoombar事件结束后,每次用户仅单击节点的复选框on或off时,checkchange仍会被激发。我真的需要一种方法来控制这个checkchang
setVisibility
设置为false。我有我的zoomend事件工作,我还有一个checkchange事件工作,但是,如果用户将zoombar推到多个级别,则checkchange事件会得到多次评估,而另一个问题是,即使zoombar事件结束后,每次用户仅单击节点的复选框on或off时,checkchange仍会被激发。我真的需要一种方法来控制这个checkchange事件只运行一次,如果用户没有使用zoombar,就停止它的触发
map.events.on({ "zoomend": function (e) {
layerTree.on("checkchange", function (node, checked) {
alert(node.text + "Inside event");
if(checked == false)
node.disable();
else if(checked == true)
node.enable();
});
if (this.getZoom() > 7) {
tib_villages.setVisibility(true);
tib_lakes.setVisibility(true);
tib_townships.setVisibility(true);
}
else {
tib_villages.setVisibility(false);
tib_lakes.setVisibility(false);
tib_townships.setVisibility(false);
if (this.getZoom() > 5) {
infrastructure.setVisibility(true);
geography.setVisibility(true);
geography2.setVisibility(true);
tib_countys.setVisibility(true);
}
else{
infrastructure.setVisibility(false);
geography.setVisibility(false);
geography2.setVisibility(false);
tib_countys.setVisibility(false);
}
}//end else
}//end function (e)
}); //end map.events.on
感谢您的宝贵时间和反馈:)
艾尔莎事实证明,这项工作已经为我们完成了:)。有一个补丁将根据节点的minScale/maxScale属性等自动禁用/启用节点。我通过将此文件放入我的GeoExt目录并在我的GeoExt目录中运行以下命令来应用该补丁:
patch-p0
我希望这有帮助!它为我创造了奇迹:)
elshae如果节点没有与层相关的id,那么两者之间的链接是什么?显示图层时是否选择了它们,或者其他特性是否匹配?如何识别要禁用的节点(在什么属性上)?我的节点的文本等于我的层的显示文本。我仔细考虑了一下,想也许有一种方法可以引发某种事件,但我还没能让它起作用。下面是一个尝试:
layerRoot.on(“checkchange”,函数(节点){alert(node.text+“Inside event”);node.disable();});tib_村。设置可见性(假);tib_lakes.setVisibility(假);tib_.setVisibility(假)代码>基本上我想要某种方式,当层被setVisibility(false)
关闭时,节点被禁用