vue nextTick

<div class="feachName" v-for="(item,index) in listName">
<div>{{item.name}}</div>
<div v-on:click="Movedown(index)"></div>
</div>
data(){

 return {
     Textname:"底部导航模块",
 listName:[
 {name:"首页",
  column:"[栏目] 首页",
   default:"默认"
  
 },
  {name:"我要分销",
  column:"[栏目] 我要分销",
   default:"默认"
  
 },
  {name:"购物车",
  column:"[栏目] 购物车",
   default:"默认"
  
 }
 
 ]
 },
 methods:{
    Movedown:function(Index){
  if(Index!=0){
 this.$nextTick(() => {
  exchange = this.listName[Index]
       this.listName[Index] = this.listName[Index-1]
        this.listName[Index-1] = exchange
        console.log(this.listName[0].name)
  })
    }
 }
 我想点击Movedown事件交换 1 跟 2数据的位置,但是了 交换是成功了,但是页面上数据没有更新过来,我是不是吧 $nextTick理解错了???
 PS:我要怎么做才能让数据交换完成后,刷新的数据也会更新过来?
 
PPS:知道 是怎么 回事了
PPPS:我把this.$set(this.listName,Index,this.listName[Index]) 这个加上不要nextTick就能动态更新了,
 
 
阅读 1.6k
1 个回答

嗯,你确实是理解错了。
listName 是对象,你不能直接通过 this.listName = xx 来改变页面,不会响应的。
需要使用 this.$set(), 请看vue文档 深入响应原理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题