Vue学习 - 模板语法

Vue的模板语法学习。

一、插入值

1、文本

最常见的的方式就是使用{{……}}(双大括号)的方式插入文本值。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>文本值插入</title>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <p>{{ message }}</p>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    message: 'Hello world!'
  }
})
</script>
</body>
</html>

上面例子运行后,{{ message }}显示Hello world! 。

2、html

使用 v-html 指令用于输出 html 代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>html插入</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
    <div v-html="message"></div>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    message: '<h1>Holle world!</h1>'
  }
})
</script>
</body>
</html>

以上例子会将html代码'<h1>Holle world!</h1>'插入到div中。

3、表达式

Vue对js的所有表达式都支持。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue - 表达式</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
    {{5+5}}<br>
    {{ ok ? 'YES' : 'NO' }}<br>
    {{ message.split('').reverse().join('') }}
    <div v-bind:id="'list-' + id">Vue学习</div>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    ok: true,
    message: 'study',
    id : 1
  }
})
</script>
</body>
</html>

运行结果:(运行后里层div的id为:list-1)

10
YES
yduts
Vue学习

4、指令

指令是带有v-前缀的特殊属性,用于在表达式的值改变时,将某些行为用于到DOM上。

<div id="app">
    <p v-if="seen">现在你看到我了</p>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    seen: true
  }
})
</script>

v-if指令将根据表达式seen的值(true或者false)来决定是否显示(插入)P元素。

5、参数

参数在指令后面以冒号指明。例如:v-bind指令被用来响应的更新HTML属性。

<div id="app">
    <pre><a v-bind:href="url">百度一下</a></pre>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    url: 'http://www.baidu.com'
  }
})
</script>

这里的href是参数,告知v-bind指令将元素的href属性与表达式url的值绑定。

二、按钮监听

1、按钮的事件我们可以使用v-on监听事件,并对用户的输入进行相应。

<div id="app">
    <p>{{ message }}</p>
    <button v-on:click="reverseMessage">反转字符串</button>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    message: 'study!'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})
</script>

以上实例在用户点击按钮后对字符串进行反转操作

三、过滤器

Vue可以自定义过滤器,用于一些常用的文本格式化。格式如下:

<!-- 在两个大括号中 -->
{{ message | capitalize }}

<!-- 在 v-bind 指令中 -->
<div v-bind:id="rawId | formatId"></div>
<div id="app">
  {{ message | capitalize }}
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    message: 'study'
  },
  filters: {
    capitalize: function (value) {
      if (!value) return ''
      value = value.toString()
      return value.charAt(0).toUpperCase() + value.slice(1)
    }
  }
})
</script>

过滤器函数接受表达式的值作为第一个参数,上面实例是将输入的字符一个字母转为大写。

过滤器可以串联:

{{ message | filterA | filterB }}

过滤器是js函数,因此可以接收参数:

{{ message | filterA('arg1', arg2) }}

这里,message是第一参数,字符串‘arg1’将传给过滤器作为第二参数,arg2作为第三参数。

四、缩写

v-bind缩写

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

v-on缩写

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

五、Vue实例

1、构造器

每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例来启动的:

var vm = new Vue({
  // 选项
})

2、属性与方法

每个Vue实例都会代理其data对象里所有的属性:

var data = { a: 1 }
var vm = new Vue({
  data: data
})
vm.a === data.a // -> true
// 设置属性也会影响到原始数据
vm.a = 2
data.a // -> 2
// ... 反之亦然
data.a = 3
vm.a // -> 3

除了 data 属性, Vue 实例暴露了一些有用的实例属性与方法。这些属性与方法都有前缀 $,以便与代理的 data 属性区分。例如:

var data = { a: 1 }
var vm = new Vue({
  el: '#example',
  data: data
})
vm.$data === data // -> true
vm.$el === document.getElementById('example') // -> true
// $watch 是一个实例方法
vm.$watch('a', function (newVal, oldVal) {
  // 这个回调将在 `vm.a`  改变后调用
})

 

posted @ 2017-12-29 14:13  chanjuan  阅读(284)  评论(0编辑  收藏  举报