zoukankan      html  css  js  c++  java
  • vueJs的学习笔记(四)

    列表渲染

    使用v-for的指令,可以实现view层的数组显示。
    它的语法是:item in items。
    item表示要迭代的数据,items表示数据源

    实例:
    HTML:

    <ul id="ulOne">
      <li v-for="item in items">
        {{item.msg}}
      </li>
    </ul>

    JS:

    var app = new Vue({
      el:"#ulOne",
      data:{
        items:[
          {msg:"1"},
          {msg:"2"},
          {msg:"3"}
        ]
      }
    })
    数组还提供了第二个参数index作为索引。
    它的语法是:(item,index) in items;
    

    实例:
    HTML:

    <ul id="ulOne">
        <li v-for="(item,index) in items">
            {{info}}-{{index}}-{{item.msg}}
        </li>
    </ul>

    JS:

    var app = new Vue({
                         el:"#ulOne",
                         data:{
                                 info:"number",
                                 items:[
                                   {msg:"1"},
                                   {msg:"2"},
                                   {msg:"3"}
                                  ]
                             }
                    })

    对对象使用v-for

    实例:
    HTML:

    <ul id="ulOne">
              <li v-for="value in objects">
                {{value}}
              </li>
            </ul>

    JS:

    var app = new Vue({
                                  el:"#ulOne",
                                  data:{
                                    objects:{
                                        firstname:"peter",
                                        lastname:"sensa"
    
                                        }
                                    }
    
                    })
    同之前一样,我们可以在参数中添加index和新的参数key(键名)。
    

    HTML:

    <ul id="ulOne">
              <li v-for="(key,value,index) in objec">
                {{index}}--{{key}}:{{value}}
              </li>
            </ul>

    JS:

    var app = new Vue({
                                  el:"#ulOne",
                                  data:{
                                    objec:{
                                        firstname:"peter",
                                        lastname:"sensa"
    
                                        }
                                    }
    
                    })

    数组更新检测

    vuejs中将js里面可以对数据进行添加,删除等操作的方法来监控数组的变异。
    例如运用push():
    语法是:实例对象.数组名.方法({数组})

    app.items.push({msg:"4"})

    除了改变数组,还有不改变原数组,返回一个新数组的方法。
    例如:

    app.items = app.items.filter(function(item){return item.msg.match(/1/)})

    对象更改检测注意事项

    由于js的限制,vue中不能直接添加删除对象属性,但是可以响应式的添加删除嵌套的对象属性。

    我们以一个实例来举例:
    语法是:Vue.set(实例名字.嵌套属性名,属性,值).
    我们的数据借用上面存在的v-for的属性实例:
    
    Vue.set(app.objec,"age",12)

    如果你想赋予多个属性值,可以采用下面的方式:

    app.objec = Object.assign({}, app.objec, {
      age: 27,
      favoriteColor: 'Vue Green'
    })

    显示过滤排序结果

    我们想要显示过滤排序结果的副本,而不是改变原数组。
    我们可以使用计算属性来显示。
    

    实例:
    HTML:

    <ul id="ulOne">
              <li v-for="fi in evenNumbers">
                {{fi}}
              </li>
            </ul>

    JS:

    var app = new Vue({
                                  el:"#ulOne",
                                  data:{
                                        numbers:[1,2,3,4,5]
                                   },
                                  computed:{
                                    evenNumbers:function(){
                                        return this.numbers.filter(function(number){
                                            return number % 2 == 0;
                                        })
                                    }
                                  }
    
                    })

    PS:或者你也可以使用methods的方式来进行。关于methods的区别我们之前已经介绍过了。

    v-for的其他用法

    例如:

     <li v-for="fi in 10">
                {{fi}}
              </li>

    实现在10以内的整数遍历。

    PS:v-for和v-if在同一层的时候将会是v-for的优先级更高。

  • 相关阅读:
    vmodel.lazy详解
    import Vue from 'vue'如何解释?
    ubuntu安装deb文件包
    vue安装
    多线程和多进程的区别
    SLH(Location Sensitive Hash)学习
    hadoop学习笔记(一)简介
    [转]关于协同过滤的好文章
    Linear Regression练习
    regularized 线性回归练习
  • 原文地址:https://www.cnblogs.com/comefuture/p/8305944.html
Copyright © 2011-2022 走看看