vue重新起航(一)

2018-10-25  本文已影响0人  阿龙哟

1.声明和渲染

    <div id="app">
      {{message}}
    </div>

    var app = new Vue({
      el: '#app',
      data: {
        message: 'Hello zhengzha'
      }
    })

创建一个Vue实例,并挂载到id为app的标签上

el: ' ' 挂载Vue实例对象

data:Vue实例的数据全部存储在这里,是一个哈希

{{message}} data里面的message就用{{message}}来渲染的


2.绑定元素属性

  <div id="app2">
    <span v-bind:title="message">
      鼠标停留看到东西
    </span>
  </div>
  
  var app2 = new Vue({
      el: '#app2',
      data: {
        message: `页面加载于${new Date().toLocaleString()}`
      }
    })

v-bind:title='message' 将title属性和vue实例data里面的message相绑定


3.循环语句

    <div id="app3">
      <p v-if="seen">你能看到我吗</p>
    </div>

     var app3 = new Vue({
      el: '#app3',
      data: {
        seen: false/true
      }
    })

v-if true则出现,false则隐藏 seen 和data里面的seen对应

    <div id="app4">
      <ol>
        <li v-for="key in todos">
            {{key.text}}
        </li>
      </ol>
     </div>

    var app4 = new Vue({
      el: '#app4',
      data: {
        todos: [{
            text: '好好学习'
          },
          {
            text: '天天向上'
          },
          {
            text: '重新做人'
          }
        ]
      }
    })

v-for 循环遍历生成li标签,vue实例data里面有一个todos的数组,里面有三个哈希,用for in 遍历对象方式

4.处理用户输入,监听动作

  <div id="app5">
    <p>{{message}}</p>
    <button v-on:click='reverseMessage'>逆转消息</button>
  </div>

    var app5 = new Vue({
      el: '#app5',
      data: {
        message: "你好,孙陈龙"
      },
      methods: {
        reverseMessage: function () {
          this.message = this.message.split('').reverse().join('')
        } //()=>箭头函数导致this变化,指向不到message了
      }
    })

v-on 监听click事件,触发函数,在vue实例里面可以用this访问当前对象属性

tips:用了箭头函数形式,结果导致this指向改成window,慎重!


5.双向绑定 v-model


  <div id="app6">
    <p>{{message}}</p>
    <input v-model='message'>
  </div>

   var app6 = new Vue({
      el: '#app6',
      data: {
        message: 'hello China!'
      }
    })

经典 你变我也变

v-model : 实现表单输入和应用状态之间的双向绑定。

6.组件

  
  <div id="app7">
    <ol>
      <todo-item
        v-for='item in groceryList'
        v-bind:todo='item'
        v-bind:key="item.id"
      >
      </todo-item> 
    </ol>
  </div>

      Vue.component('todo-item', {
      props:['todo'],
      template: '<li>{{todo.text}}</li>'
    })

    var app7 = new Vue({
      el:'#app7',
      data:{
        groceryList:[
          {id:'0',text:'蔬菜'},
          {id:'1',text:'茄子'},
          {id:'2',text:'随便其他什么东西'}
        ]
      }
    })

Vue,component 创建一个组件,name为'todo-item',组件对象里面有一个props属性,表明接受父组件的变量名称,template模板就是组件长啥样

在HTML中直接以name为标签名插入

 <todo-item
        v-for='item in groceryList'   循环
        v-bind:todo='item' 将接受的todo和item绑定
        v-bind:key="item.id" 定义一个key用来加以标识
      >
 </todo-item> 
上一篇 下一篇

猜你喜欢

热点阅读