zoukankan      html  css  js  c++  java
  • v-for列表渲染之数组变动检测

    1.简单举一个v-for列表渲染例子

    <template>
      <div>
        <ul>
          <li v-for="item in items">{{item}}</li>
        </ul>
      </div>
    </template>
    <script>
      export default {
        data () {
          return {
            items:['html','css','javascript']
          }
        },
      }
    </script>

    2.修改items数组中的值

    • demo  :  https://run.iviewui.com/9OwDCfZE
    • 结果发现数组中的值虽然发生了变化,但是watch中并没有监听到数组的变化,并且DOM也没有发生改变;
     1     methods:{
     2       hadnleupdata(){
     3         this.items[1]='python';
     4         console.log(this.items)
     5       }
     6     },
     7     watch:{
     8       items(val){
     9         console.log('watch中items值为:',val)
    10       }
    11     }

    3. 如何解决并让DOM更新?

    1. 利用 $forceUpdate 强制更新
        • 在使用Vue框架开发时,在函数中改变了页面中的某个值,在函数中查看是修改成功了,但在页面中没有及时刷新改变后的值,就可以使用此方法;
        • 通过这种方式发现DOM虽然发生了改变,但是watch中的监听事件并没有触发;
     1     methods:{
     2       hadnleupdata(){
     3         this.items[1]='python';
     4         console.log(this.items)
     5         this.$forceUpdate();
     6       }
     7     },
     8     watch:{
     9       items(val){
    10         console.log('watch中items值为:',val)
    11       }
    12     }

      2. Vue.js 包装了被观察数组的变异方法,故它们能触发视图更新。被包装常用的方法有:

    • push()
    • pop()
    • shift()
    • unshift()
    • splice()
    • sort( )
          通过这种方式发现 DOM 发生了改变并且 watch 监听事件也被触发了;
     1     methods:{
     2       hadnleupdata(){
     3         this.items.splice(1,1,'python')
     4         console.log(this.items)
     5       }
     6     },
     7     watch:{
     8       items(val){
     9         console.log('watch中items值为:',val)
    10       }
    11     }
    4. 结合iview提供的Table组件使用案例:https://run.iviewui.com/oM49rQ7H

        

  • 相关阅读:
    UVALive
    训练指南 UVA
    训练指南 UVALive
    Codeforces Round #535 (Div. 3)
    训练指南 UVALive
    训练指南 UVALive
    Codeforces Round #534 (Div. 2)
    Codeforces Round #532 (Div. 2)
    《算法问题实战策略》——chaper9——动态规划法技巧
    《训练指南》——8.3
  • 原文地址:https://www.cnblogs.com/yuzhongyu/p/10443606.html
Copyright © 2011-2022 走看看