请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

在使用 v-slot 时遇到问题

看官网时,根据官网提供的代码,做成一个完整的 demo,在操作的过程中,出现的实际情况跟官网中的解说不一致,首先我的 vue 版本是 2.9.6,比如在事件处理这一章节中:

图片描述

实际上只有 @.self 会阻止对元素自身的点击,但是无论有无 prevent 都没有任何不同,ps:我设置了三层父子元素的点击传递,比如在第二层设置 @click.prevent.self 并不会阻止第一层和第三层的点击。所以并不像官网所说的会阻止所有的点击。不知道是不是我理解不准确。

今天在学习 v-slot 时,遇到报错:

图片描述

但是我使用被老语法: slot 和 slot-scope 就好使,我的版本都在新增这些语法的版本之上,我表示疑惑,并且我在网上没有搜索到答案。

<body>
    <div id="root">
      <input type="text" v-model="inputValue" @keydown.13="handleBtnClick">
      <button @click="handleBtnClick">提交</button>
      <h2>未完成</h2>
      <ul>
        <li v-for="(todo,index) in todos" :key="todo.id" @click="handleLiClick(index)" v-if="!todo.isComplete">{{todo.text}}</li>
      </ul>

      <h2>已完成</h2>
      <todo-list :todos="todos">
        <template #todo="{ todo }">
          <span>√</span>
          {{todo.text}}
        </template>
      </todo-list>
    </div>

    <script>
      Vue.component('todo-list', {
        props: ['todos'],
        template: `<ul>
          <li v-for="todo in filteredTodos" :key="todo.id">
            <slot name="todo" :todo="todo"></slot>
          </li>
        </ul>`,
        computed: {
          filteredTodos() {
            return this.todos.filter((todo) => todo.isComplete)
          }
        }
      })

      var vm = new Vue({
        el: '#root',
        data: {
          inputValue: '',
          count: 0,
          todos: []
        },
        methods: {
          handleBtnClick() {
            this.todos.push({id: this.count++ + '0', text: this.inputValue, isComplete: false})
            this.inputValue = ''
          },
          handleLiClick(index) {
            this.todos[index].isComplete = true
          }
        }
      })
    </script>
  </body> 

以上的代码只要将 v-slot 语法改用成 slot 和 slot-scope 的语法就没有任何报错。

正在回答 回答被采纳积分+3

1回答

Dell 2019-05-23 09:17:33

这部分内容今年将对课程进行升级,讲解最新的slot语法,同学对不住,老的语法可能现在确实有一点问题

0 回复 有任何疑惑可以回复我~
  • 提问者 六一888 #1
    老的语法没问题,用新语法才有问题,我的版本是 2.9..6 超过了引进 slot 新语法的 2.6.0 版本,所以表示疑惑。
    回复 有任何疑惑可以回复我~ 2019-05-24 00:48:58
  • Dell 回复 提问者 六一888 #2
    我的意思是老得语法在新版中有问题
    回复 有任何疑惑可以回复我~ 2019-05-25 18:04:25
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信