Vue.js小案例(1)

Posted on 2017-07-11 20:57  ITandYT  阅读(422)  评论(0编辑  收藏  举报

数据绑定

数据绑定是vue.js的基础。本例中就是利用了vue.js的v-model指令在表单元素上创建双向数据绑定。

<!--这是我们的View-->
<div id="app">
    <p>{{ message }}</p>
    <input type="text" v-model="message"/>
</div>

<script>
    // 这是我们的Model
    new Vue({
        el: '#app',
        data: {
            message:'Hello World!'
        }
    })
</script>

将message绑定到文本框,当更改文本框的值时,<p>{{ message }}</p> 中的内容也会被更新。

导航切换

这里主要应用了vue.js的v-for指令来渲染一个列表、v-bind指令来绑定class以及v-on指令来处理事件

1这是HTML代码 

<div id="main"> 2 <nav @click.prevent> 3 <a v-for="item in items" :class="{'show': item.active}" @click="makeActive(item, $index)">{{item.name}}</a> 4 </nav> 5 <p>You chose <b>{{active}}</b></p> 6 </div>

css代码:

 1 *{
 2     margin:0;
 3     padding:0;
 4 }
 5 #main{
 6     width:432px;
 7     margin:0 auto;
 8     text-align:center;
 9 }
10 nav{
11     display:inline-block;
12     margin:60px auto 45px;
13     background-color:#5597b4;
14     box-shadow:0 1px 1px #ccc;
15     border-radius:2px;
16 }
17 nav a{
18     display:inline-block;
19     padding: 18px 30px;
20     color:#fff !important;
21     font-weight:bold;
22     font-size:16px;
23     text-decoration:none !important;
24     line-height:1;
25     background-color:transparent;
26     -webkit-transition:background-color 0.25s;
27     -moz-transition:background-color 0.25s;
28     transition:background-color 0.25s;
29     cursor:pointer;
30 }
31 b{
32     display:inline-block;
33     padding:5px 10px;
34     background-color:#c4d7e0;
35     border-radius:2px;
36     font-size:18px;
37 }
38 .show{
39     background-color:#e35885;
40 }

JS代码:

var vm = new Vue({
    el:'#main',
    data:{
        active:'HTML',
        items:[
            {name:'HTML', active:true},
            {name:'CSS', active:false},
            {name:'JavaScript', active:false},
            {name:'Vue.js', active:false}
        ]
    },
    methods: {
        makeActive: function(item, index){
            this.active = item.name;
            for(var i=0; i<this.items.length;i++){
                this.items[i].active = false;
            }
            this.items[index].active = true;
        }
    }
});

你们快试试吧!