美文网首页H5技术栈程序员Vue.js专区
VUE专题(一)vue2.0数据双向绑定 +表单bootstra

VUE专题(一)vue2.0数据双向绑定 +表单bootstra

作者: 腿毛崩你一脸 | 来源:发表于2017-02-16 20:54 被阅读2873次
    vue.png

    很久没有动手写过文章了,今天简书推送有3个人喜欢了我的文章,我很是惊讶,毕竟这么久没更了。说明我写的东西还是对大家有帮助的。


    Paste_Image.png

    最近一直在用vue,觉得确实是好用。
    一,拿数据的双向绑定来说吧
    <pre><!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>demo1</title>
    </head>
    <body>
    <div id="app">
    <p>{{ name }}</p>
    <input type="text" v-model="name">
    </div>
    </body>
    <script type="text/javascript" src="vue.js"></script>
    <script>
    new Vue({
    el: '#app',
    data: {
    name: ''
    },
    watch: {
    name: function () {
    console.log(this.name);
    }
    }
    });
    </script>
    </html></pre>

    log

    vue中的所有数据都是在data中定义的,
    el是指的挂载的元素,
    watch 是我可以检测某个数据的变化。
    v-model=“name” 就是与data中的name数据绑定,input框中的值变,那么data中的name也会变,我们可以通过差值操作,也就是{{name}}来看到变化,当然也可以像我一样打log。都是可以的。

    当然这样也许还不是很实用,官网上也是这么介绍的,那么就说我在工作中是怎么用的吧

    表单

    现在我的需求是要得到我表单里边的所有value ,我们也许可以
    <pre> let service = $('.vendor').val();
    let vendor = document.getElementsByClassName('vendor')[0].value;</pre>
    但是这样就完全没有get到vue双向绑定的好处了,那么我们该怎么做呢?
    <pre>import service from './components/service.vue';
    import $ from 'jquery';

    export default {
        data () {
            return {
                resultData: '',
                vendor: '',
                dType: '',
                services: [service],
                items: [service],
                device: '',
                dDesc: ''
            }
        },
        watch: {
            services () {
                console.log(this.services);
            },
            items (val) {
                this.items = val;
                console.log(this.items);
            }
        },
        components: {
            service
        },
        methods: {
            addService (component) {
                this.items.push(component);
            },
            childServicesChange (val) {
                this.services = val;
            },
            commit () {
                console.log('commit');
                let device = {
                    "type": 'urn:' + this.vendor + ':device:' +  this.dType + ':0000',
                    "description": this.dDesc,
                    "services": this.items
                };</pre>
    

    看到没,我就是直接用的this.vendor, vendor是在data中定义好的,也进行了双向绑定v-model
    <pre><template>
    <div class="devDesc">
    <h1>Device Description</h1>
    <form class="form-horizontal" role="form" ref="form" id="form">
    <div class="form-group">
    <label for="vendor" class="col-sm-2 control-label text-left">vendor:</label>
    <div class="col-sm-2">
    <input type="text" class="form-control vendor" id="vendor" v-model="vendor" control-label name="vendor">
    </div>
    </div>
    <div class="form-group">
    <label for="dType" class="col-sm-2 control-label text-left">Type:</label>
    <div class="col-sm-2">
    <input type="text" class="form-control dType" id="dType" v-model="dType" control-label name="dType">
    </div>
    </div>
    <div class="form-group">
    <label for="dDesc" class="col-sm-2 control-label text-left">description:</label>
    <div class="col-sm-2">
    <input type="text" class="form-control dDesc" id="dDesc" v-model="dDesc" control-label name="dDesc">
    </div>
    </div>

            <!--发现这个serList不用抽出来组件-->
        <div class="serList serListPad">
            <section class="serList-section">
                <h3>
                    <span class="span-serList">service List</span>
                    <button type="button" class="btn btn-default btn-sm" @click="addService(service)">
                        <span class="glyphicon glyphicon-plus"></span>
                    </button>
                </h3>
            </section>
            <!--<service v-for="item in items" :items="items" :myService="myService" @child-services-change="childServicesChange"></service>-->
            <div v-for="service in services">
                <service v-for="item in items" :items="items" :service="service" @child-services-change="childServicesChange"></service>
            </div>
    
        </div>
        </form>
        <button class="btn btn-info" @click="commit">commit</button>
        <button class="btn btn-success">save</button>
    </div>
    

    </template></pre>

    log

    今天先介绍到这里,以后会慢慢深入,下面是vue交流群,可以加下交流互相学习,共同进步。


    vue.png

    相关文章

      网友评论

      • 64237070faea:我会说二维码过期了嘛
        腿毛崩你一脸:@暮暮暮暮暮 等我下篇 下篇我会更新二维码 说不定就是今天晚上
      • 柳丁Jason_Chen:Vue内容写的很棒!继续加油,下次分析下2.0带来的变化。
      • 柳丁Jason_Chen:简书 做的真心不如知乎等其他的,所以建议你把文章也在知乎上发送一下。格式不好看!
        腿毛崩你一脸: @柳丁Jason_Chen 😂好的
      • 腿毛崩你一脸:在电脑上打开就可以用手机识别二维码了。。。

      本文标题:VUE专题(一)vue2.0数据双向绑定 +表单bootstra

      本文链接:https://www.haomeiwen.com/subject/qemhwttx.html