You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击HTML页面图谱节点后步进器无法重置为初始步骤问题求助

解决方案

你使用的是AngularJS Material的步进器组件,步进器的当前步骤、步骤禁用/完成状态都绑定在控制器作用域变量上,不需要做页面局部刷新,直接在节点点击事件的处理逻辑里重置对应状态变量即可,修改后的click函数代码如下:

var click = function (d){
  document.getElementById('stepperTwoLabs').style.display='none';
  document.getElementById('stepperThreeLabs').style.display='none';

  // 新增:先重置两个步进器的所有状态,避免之前的状态残留
  // 如果你是用$scope挂载变量,就把下面的vm换成$scope
  // 重置2实验步进器状态
  vm.selected = 0;
  vm.step1 = {completed: false};
  vm.step2 = {disabled: true, completed: false};
  vm.step3 = {disabled: true, completed: false};
  // 重置3实验步进器状态
  vm.step4 = {disabled: true, completed: false};

  if(d.parent.name == 'Buffer Overflow' || d.parent.name == 'Password Cracking' || d.parent.name == 'Denial of Service' ||
     d.parent.name == 'Privilege Escalation' || d.parent.name == 'Web Hacking' ) {
       vm.numlab=d.children.length;
       if (d.children.length==2) {
        document.getElementById('stepperTwoLabs').style.display='block';
        for(var i=0; i< d.children.length; i++) {
          var lab=d.children[i].name;
          $('#iframe'+i).attr('src', 'http://localhost:18181/lab/use/NS/'+lab);
      }
      } else if (d.children.length==3) {
        document.getElementById('stepperThreeLabs').style.display='block';
       for(var i=0; i<d.children.length; i++) {
        var lab=d.children[i].name;
        var j=i+2;
        $('#iframe'+j).attr('src', 'http://localhost:18181/lab/use/NS/'+lab);
          }
      }
    }
}

如果你的逻辑里拿不到控制器的vm或者$scope对象,可以通过DOM元素获取对应的作用域来修改状态,示例如下:

// 获取2实验步进器的作用域
var scope2 = angular.element(document.querySelector('#stepperTwoLabs md-steppers')).scope();
scope2.selected = 0;
scope2.step2.disabled = true;
scope2.step3.disabled = true;
scope2.step1.completed = false;
scope2.step2.completed = false;
scope2.step3.completed = false;
scope2.$apply(); // 触发视图更新

// 获取3实验步进器的作用域
var scope3 = angular.element(document.querySelector('#stepperThreeLabs md-steppers')).scope();
scope3.selected = 0;
scope3.step2.disabled = true;
scope3.step3.disabled = true;
scope3.step4.disabled = true;
scope3.step1.completed = false;
scope3.step2.completed = false;
scope3.step3.completed = false;
scope3.step4.completed = false;
scope3.$apply();

修改后每次点击节点,都会先把步进器的状态重置为初始值,再加载对应实验,步进器就会默认停留在第一步。

内容的提问来源于stack exchange,提问作者MaxyCar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:54:00