VUE初始入门--指令集

声明式渲染,文本插值

数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值: Mustache 标签将会被替代为对应数据对象上 msg 属性的值。无论何时,绑定的数据对象上 msg 属性发生了改变,插值处的内容都会更新。

<div id="app">
  {{ message }}
</div>
------------
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。但请留心这会影响到该节点上的其它数据绑定:

<span v-once>这个将不会改变: {{ msg }}</span>

指令

v-html

双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,你需要使用 v-html 指令

<p>Using mustaches: {{ rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>

v-bind

v-bind:指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性。可能你已经猜到了,它们会在渲染的 DOM 上应用特殊的响应式行为。在这里,该指令的意思是:“将这个元素节点的 title 特性和 Vue 实例的 message 属性保持一致”。

<!-- 完整语法 -->
<a v-bind:href="url">...</a>

<!-- 缩写 -->
<a :href="url">...</a>
<!DOCTYPE html>
<html>
<head>
  <title>My first Vue app</title>
  <script src="https://unpkg.com/vue"></script>
</head>
<body>
  <div id="app">
    {{ message }}
  </div>
  <div id="app2">
    <span v-bind:title="message">
      鼠标悬停
    </span>
  </div>
  <script>
    var app = new Vue({
      el: '#app',
      data: {
        message: 'Hello Credo!'
      }
    })

    var app2=new Vue({
      el:'#app2',
      data:{
        message:'页面加载于'+new Date().toLocaleString()
      }
    })
  </script>
</body>
</html>

条件指令[v-if]

通过v-if 来控制是否显示

<div id="app3">
    <p v-if="seen1">see me 1</p>
    <p v-if="seen2">see me 2</p>
  </div>
var app3=new Vue({
      el:'#app3',
      data:{
        seen1:true,
        seen2:false
      }
    })

循环指令[v-for]

<div id="app4">
    <ol>
      <li v-for="todo in todos">
        {{todo.text}}
      </li>
    </ol>
  </div>
var app4 = new Vue({
      el: '#app4',
      data: {
        todos: [{ text: 'first' }, { text: 'vue' }, { text: 'demo' }]
      }
    })

处理用户输入指令[v-on]

为了让用户和你的应用进行交互,我们可以用 v-on 指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法.其中所有的 DOM 操作都由 Vue 来处理

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>
<div id="app5">
    <p>{{ message }}</p>
    <button v-on:click="reverseMsg">reverse</button>
  </div>
    var app5 = new Vue({
      el: '#app5',
      data: {
        message: 'Hello World!'
      },
      methods: {
        reverseMsg: function () {
          this.message = this.message.split('').reverse().join('')
        }
      }
    })

处理双向绑定[v-model]

<div id="app6">
    <p>{{ message }}</p>
    <input v-model="message" />
  </div>
	var app6 = new Vue({
      el: '#app6',
      data: {
        message: 'Hello Vue!'
      }
    })

实例生命周期钩子

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestory
  • destoryed

注意事项: 生命周期钩子的 this 上下文指向调用它的 Vue 实例。

不要在选项属性或回调上使用箭头函数,比如 created: () => console.log(this.a) 或 vm.$watch('a', newValue => this.myMethod())。因为箭头函数是和父级上下文绑定在一起的,this 不会是如你所预期的 Vue 实例,经常导致 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之类的错误。

使用:

new Vue({
  data: {
    a: 1
  },
  created: function () {
    // `this` 指向 vm 实例
    console.log('a is: ' + this.a)
  }
})

转载于:https://my.oschina.net/zhaoqian/blog/1920876

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值