Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅在触发另一个事件后才触发该事件_Javascript_Extjs_Openlayers - Fatal编程技术网

Javascript 仅在触发另一个事件后才触发该事件

Javascript 仅在触发另一个事件后才触发该事件,javascript,extjs,openlayers,Javascript,Extjs,Openlayers,我有一个带有缩放控件的GeoExt地图面板。当我地图上的图层“超出范围”时,我真的想禁用树面板中的一些节点,也就是说,它们的setVisibility设置为false。我有我的zoomend事件工作,我还有一个checkchange事件工作,但是,如果用户将zoombar推到多个级别,则checkchange事件会得到多次评估,而另一个问题是,即使zoombar事件结束后,每次用户仅单击节点的复选框on或off时,checkchange仍会被激发。我真的需要一种方法来控制这个checkchang

我有一个带有缩放控件的GeoExt地图面板。当我地图上的图层“超出范围”时,我真的想禁用树面板中的一些节点,也就是说,它们的
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)
关闭时,节点被禁用