zoukankan      html  css  js  c++  java
  • Vue基础

    一、v-for

    v-bind简写 :,:key值后注意不要跟差值表达式,要跟字段或者js表达式

    v-for的key值不用index,好性能,一般key值取接口里定义的唯一字段,如:id

     1 <body>
     2         <!--push pop shift unshift splice reverse sort-->
     3         <div id="app">
     4             <div v-for='(item,index) of list'
     5                  :key='item.id'
     6             >
     7                 {{item.text}}----{{index}}
     8             </div>
     9         </div>
    10     </body>
    11     <script>
    12         var vm = new Vue({
    13             el:'#app',
    14             data:{
    15                 list:[{
    16                     id:'001',
    17                     text:'nice'
    18                 },{
    19                     id:'002',
    20                     text:'to'
    21                 },{
    22                     id:'003',
    23                     text:'meet'
    24                 },
    25                     
    26                 ]
    27             }
    28         })
    29     </script>
    v-for

    v-for ,如果想修改数组内容不能通过数组下标的方式去添加,那样只会改变数据,页面内容不会有变化,可以通过以下方式去修改

    1.通过变异方法:push pop shift unshift splice reverse sort

    2.改变数据引用

    3.set方法,如改变数组下标为2的text值从"meet"变成“you”

      Vue.set(vm.list,2,{text:'meet3' }) 或 vm.$set(vm.list,2,{text:'you'})

    二、组件使用中的细节

     1 <body>
     2         <div id="app">
     3             <table>
     4                 <tbody>
     5                     <row></row>
     6                     <row></row>
     7                     <row></row>
     8                     
     9                 </tbody>
    10             </table>
    11         </div>
    12     </body>
    13     <script>
    14         Vue.component('row',{
    15             template:"<tr><td>Data</td></tr>"
    16         })
    17         var vm = new Vue({
    18             el:'#app',
    19             data:{
    20             },
    21             methods: {
    22             }
    23         })
    24     </script>
    js

    (1)is,上面的代码写会有一个小bug,就是插入的组件不是显示在tbody里,而是显示在table同级,为了解决这个问题,要用到is,

    <tbody>
              <tr is='row'></tr>
              <tr is='row'></tr>
              <tr is='row'></tr>
    </tbody>

    is后面等于的就是自己定义的组件的名称,这样就可以解决上面的bug,同理

    <ul>
      <li is='组价名字'></li>
    </ul>

    同理<ol>
      <li is='组价名字'></li>
     </ol>

    同理<select>
        <option is='组价名字'></option>
           </select>

    (2) ref,vue中获取dom元素

     1    <body>
     2         <div id="app">
     3             <div ref="hello" @click="handleClick">hello</div>
     4         </div>
     5     </body>
     6     <script>
     7         var vm = new Vue({
     8             el:'#app',
     9             data:{
    10             },
    11             methods: {
    12                 handleClick:function() {
    13                     alert(vm.$refs.hello.innerHTML)
    14                 }
    15             }
    16         })
    17     </script>  
    ref

    页面要获取的dom元素定义ref,在js里通过vm.$refs来获取ref的名称并进行操作

    (3)组件里的data必须是函数,且要返回一个对象

    因为Vue实例里的data对象只会调用一次,所以用data:{}形式,组件里的对象可能会调用多次,所以定义成函数来返回对象的母的,保证每个子组件都有一份独立的数据存储,写成

    data:function(){
      return {}
    }形式。

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8" />
     5         <title>计数器</title>
     6         <script src="js/vue.js"></script>
     7     </head>
     8     <body>
     9         <div id="app">
    10             <count  @change="handelChange" ref="one"></count>
    11             <count  @change="handelChange" ref="two"></count>
    12             <div>{{total}}</div>
    13         </div>
    14     </body>
    15     <script>
    16         Vue.component('count',{
    17             template:'<div @click="handelClick">{{number}}</div>',
    18             data:function() {
    19                 return {
    20                     number:0,
    21                     
    22                 }
    23             },
    24             methods:{
    25                 handelClick:function() {
    26                     this.number++,
    27                     this.$emit('change')
    28                 }
    29             }
    30         })
    31         var vm = new Vue({
    32             el:'#app',
    33             data:{
    34                 total:0
    35             },
    36             methods: {
    37                 handelChange:function(){
    38                     this.total = this.$refs.one.number + this.$refs.two.number
    39                 }
    40             }
    41         })
    42     </script>
    43 </html>
    点击加一,计数器
  • 相关阅读:
    Javascript中字符串转数字
    Discover a powerful and suitable Javascript Automatic Testing Toolkit
    Homework Exercises 1
    Javascript实现关联数据(Linked Data)查询
    Javascript查询DBpedia小应用
    jQuery ajax —— 将类AJAX方法包装起来
    jQuery ajax —— 一些细节以及主函数扩展出来的方法
    无阻塞脚本加载方案
    SpringLayout的使用
    swing控件的一些操作
  • 原文地址:https://www.cnblogs.com/qdkfyym/p/12040673.html
Copyright © 2011-2022 走看看