javascript - Vue.js 中可编辑文本区域的 TreeView

标签 javascript vue.js

我有这个 fiddle :

https://jsfiddle.net/pnqzspoe/12014/

我想稍微修改一下,并希望将每个节点显示为包含相应文本的文本区域。此外,我想提供一个“回复”选项。这意味着插入一个新的文本区域,我们可以在其中输入文本。

这是代码:

<script type="text/x-template" id="item-template">
  <li>
    <div
      :class="{bold: isFolder}"
      @click="toggle"
      @dblclick="changeType">
      {{ model.name }}
      <span v-if="isFolder">[{{ open ? '-' : '+' }}]</span>
    </div>
    <ul v-show="open" v-if="isFolder">
      <item
        class="item"
        v-for="(model, index) in model.children"
        :key="index"
        :model="model">
      </item>
      <li class="add" @click="addChild">+</li>
    </ul>
  </li>
</script>

<p>(You can double click on an item to turn it into a folder.)</p>



var data = {
  name: 'My Tree',
  children: [
    { name: 'hello' },
    { name: 'wat' },
    {
      name: 'child folder',
      children: [
        {
          name: 'child folder',
          children: [
            { name: 'hello' },
            { name: 'wat' }
          ]
        },
        { name: 'hello' },
        { name: 'wat' },
        {
          name: 'child folder',
          children: [
            { name: 'hello' },
            { name: 'wat' }
          ]
        }
      ]
    }
  ]
}

// define the item component
Vue.component('item', {
  template: '#item-template',
  props: {
    model: Object
  },
  data: function () {
    return {
      open: false
    }
  },
  computed: {
    isFolder: function () {
      return this.model.children &&
        this.model.children.length
    }
  },
  methods: {
    toggle: function () {
      if (this.isFolder) {
        this.open = !this.open
      }
    },
    changeType: function () {
      if (!this.isFolder) {
        Vue.set(this.model, 'children', [])
        this.addChild()
        this.open = true
      }
    },
    addChild: function () {
      this.model.children.push({
        name: 'new stuff'
      })
    }
  }
})

// boot up the demo
var demo = new Vue({
  el: '#demo',
  data: {
    treeData: data
  }
})

此用例的模板是什么?

最佳答案

如果我没有理解你的问题......

替换

{{model.name}} 

<textarea v-model="model.name"></textarea>

应该可以吗?

关于javascript - Vue.js 中可编辑文本区域的 TreeView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53942596/

相关文章:

javascript - vue @click 函数 on::after css element - close btn

javascript - Jshint 告诉我们三元运算符中有一个警告

javascript - 从服务器获取数据时挂载钩子(Hook)(Promise/async)出错

javascript - 在javascript中访问vue js对象

javascript - 检查字符串是否包含所有子字符串的最快方法

javascript - 通过 JS 与视口(viewport)(非相对)相关的元素的位置坐标

javascript - Laravel获取图像的文件内容但在生产环境上不起作用

javascript - web3.eth.accounts[0] 返回未定义和 app.vote(1,{ from :web3. eth.accounts[0] }) 给出错误

javascript - Fullcalendar 如何在 DayCell 中显示 html 元素?

JavaScript:如何在不附加查询字符串的情况下重试加载图像?