zoukankan      html  css  js  c++  java
  • vue 组建实现数据的双向绑定

    <!DOCTYPE html>
    <html>
    <head>

    <style>
    body {
      font-family: Helvetica Neue, Arial, sans-serif;
      font-size: 14px;
      color: #444;
    }

    table {
      border: 2px solid #42b983;
      border-radius: 3px;
      background-color: #fff;
    }

    th {
      background-color: #42b983;
      color: rgba(255,255,255,0.66);
      cursor: pointer;
      -webkit-user-select: none;
      -moz-user-select: none;
      -user-select: none;
    }

    td {
      background-color: #f9f9f9;
    }

    th, td {
      min- 120px;
      padding: 10px 20px;
    }

    th.active {
      color: #fff;
    }

    th.active .arrow {
      opacity: 1;
    }

    .arrow {
      display: inline-block;
      vertical-align: middle;
      0;
      height: 0;
      margin-left: 5px;
      opacity: 0.66;
    }

    .arrow.asc {
      border-left: 4px solid transparent;
      border-right: 4px solid transparent;
      border-bottom: 4px solid #fff;
    }

    .arrow.dsc {
      border-left: 4px solid transparent;
      border-right: 4px solid transparent;
      border-top: 4px solid #fff;
    }

    #search {
      margin-bottom: 10px;
    }



    </style>



    <script src="http://static.runoob.com/assets/vue/1.0.11/vue.min.js"></script>
    <!-- component template -->
    <script type="text/x-template" id="grid-template">
           <tr>
           <td >
              {{temp}}
            </td>
            <td >
              {{name}}
            </td>
             <td >
              {{power}}
            </td>
            <td >
             {{product.price}}
            </td>
            <td >
              {{product.stock}}
            </td>
            <td >
              {{product.limitmount}}
            </td>
            <td >
                <demo-select :data="select1"   :list="list" :data2="select2"  :data3="select3"  :product.sync="product"></demo-select>
                
            </td>
          </tr>
    </script>

    <script type="text/x-template" id="select-template">
             <select v-model="selected" value="{{product.price}}">
                <option v-for="standar in data " v-on:click="notify(product,list)">{{standar}}</option>
             </select>
             <select v-model="selected2" >
                <option v-for="standar in data2 " v-on:click="notify(product,list)">{{standar}}</option>
             </select>
             <select v-model="selected3" >
                <option v-for="standar in data3 " v-on:click="notify(product,list)">{{standar}}</option>
             </select>
    </script>
    <!-- 子组件模板 -->
    <template id="child-template">
      <input v-model="msg">
      <button v-on:click="notify">Dispatch Event</button>
    </template>

    <!-- 父组件模板 -->
    <div id="events-example">
      <p>Messages: {{ messages | json }}</p>
      <child></child>
    </div>


    <!-- demo root element -->
    <div id="demo">

      <table>
        <thead>
          <tr>
           <th >
              temp
            </th>
            <th >
              name
            </th>
            <th>
              power
            </th>
            <th>
             price
            </th>
            <th>
              stock
            </th>
            <th>
              limitmount
            </th>
            <th >
                list
            </th>
          </tr>
        </thead>
        <tbody>
         
        </tbody>
      </table>
       <demo-grid   v-for="data in gridData"  :temp="data.temp" :name="data.name" :power="data.power" :list="data.datalist"
       :select1="data.list" :select2="data.list2" :select3="data.list3" :product="data.datalist[0]" ></demo-grid>
    </div>

    <div id="dr01"></div>
    </body>
    </html>
    <script>




    // register the grid component
    Vue.component('demo-grid', {
      template: '#grid-template',
      props: {
        temp :Number,
        name :String,
        power :String,
        list :Array,
        product:Object,
        select1: Array,
        select2: Array,
        select3: Array
          },
       methods: {
        childmsg: function (value) {
          alter(value);
        }
      }
    })

    Vue.component('demo-select', {
      template: '#select-template',
      props: {
        data: Array,
        data2: Array,
        data3: Array,
        list: Array,
        type:String,
        product:Object

         },
         data: function () {

        
        return { selected: '',selected2: '',selected3:''
        
        }
         },
          methods: {
        notify: function (val,list) {    
           var ishas=false;
           for(var i=0;i<list.length;i++)
           {
            var item=list[i];
           if(this.selected==item.price&&this.selected2==item.stock&&this.selected3==item.limitmount)
            {
            
               this.product=item;
               ishas=true;
               
              }

               if(!ishas)this.product='';
           }
          
          
        }
      }
    })



    // bootstrap the demo
    var demo = new Vue({
      el: '#demo',
      data: {
        
        gridData:
        [{ name: 'Chuck Norris',temp:1, power: Infinity,list:[11,12,13] ,list2:[121,122,123] ,list3:[131,132,133],datalist:[{price:11,stock:121,limitmount:131},{price:131,stock:132,limitmount:133}]},
          { name: 'Bruce Lee',temp:2, power: 9000 ,list:[21,22,23] ,list2:[221,222,223] ,list3:[231,232,233] ,datalist:[{price:121,stock:122,limitmount:123},{price:131,stock:132,limitmount:133}]},
          { name: 'Jackie Chan', temp:3,power: 7000,list:[31,32,33] ,list2:[321,322,323] ,list3:[331,332,333] ,datalist:[{price:121,stock:122,limitmount:123},{price:131,stock:132,limitmount:133}] },
          { name: 'Jet Li',temp:4,power: 8000,list:[41,42,43] ,list2:[421,422,423] ,list3:[431,432,433] ,datalist:[{price:421,stock:422,limitmount:423},{price:131,stock:132,limitmount:133}] }
        ]
      }
    })





    </script>

  • 相关阅读:
    php-fpm sock文件权限设置
    window netsh interface portproxy 配置转发
    powershell 删除8天前的日志
    Ansible拷贝文件遇到的问题
    Git-Credential-Manager-for-Mac-and-Linux
    MySQL开启远程连接的方法
    mac安装神器brew
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    Linux中如何安装RAR
    Linux常用压缩和解压命令
  • 原文地址:https://www.cnblogs.com/lyd96321/p/5838024.html
Copyright © 2011-2022 走看看