账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue中这种树状结构数据,如何递归成dom节点
    47
    0
    在vue中数据是这样的类型{ name:'A', child:{ name:'B', child:{ name:'C', child: { name:'D', child:...... } } }}如何用这种数据递归出元素节点的dom<div> <span>A</span> <div> <span>B</span> <div> <span>C</span> <div> <span>D</span> <div>.....</div> </div> </div> </div></div>
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在Vue中,你可以使用递归来生成树状结构的DOM节点。以下是一个简单的例子:

      ```javascript // 假设我们有一个树状结构数据 data() { return { nodes: [ { id: 1, name: '节点1', children: [ { id: 2, name: '节点2', children: [ { id: 3, name: '节点3', children: [] } ] } ] } ] }; }, methods: { render() { const { nodes } = this; const dom = document.createElement('ul');

      // 遍历所有节点
      for (let node of nodes) {
        // 如果该节点有子节点,递归生成
        if (node.children) {
          dom.appendChild(this.render(node.children));
        } else {
          // 如果该节点没有子节点,直接添加到ul中
          dom.appendChild(node);
        }
      }
      
      return dom;
      

      } } ```

      在这个例子中,我们首先定义了一个数据结构,其中包含一个名为nodes的数组,其中包含我们想要生成树状结构的节点。然后,我们定义了一个名为render的方法,该方法遍历所有节点,并递归地生成每个节点的子节点。

      render方法中,我们首先创建一个新的ul元素。然后,我们遍历所有节点。对于每个节点,我们检查它是否有子节点。如果有子节点,我们递归地生成子节点,并将它们添加到ul元素中。如果没有子节点,我们直接将该节点添加到ul元素中。最后,我们返回生成的ul元素。

      这样,我们就可以通过调用render方法,将我们想要生成的树状结构的节点数据传递给它,然后返回生成的DOM节点。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部