1. 程式人生 > >vue學習-基本語法

vue學習-基本語法

vue的語法同angularjs類似,指令由angularjs的ng 變成了vue的v.

1.一個例子

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Vue 測試</title>
	<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
</head>
<body>
	<div id="vue_det">
		<h1>site : {{site}}</h1>
		<h1>url : {{url}}</h1>
		<h1>{{details()}}</h1>
	</div>
	<script type="text/javascript">
		var vm = new Vue({
			el: '#vue_det',
			data: {
				site: "菜鳥教程",
				url: "www.runoob.com",
				alexa: "10000"
			},
			methods: {
				details: function() {
					return  this.site ;
				}
			}
		})
	</script>
</body>
</html>

Vue 構造器中有一個el 引數,它是 DOM 元素中的 id。
data 用於定義屬性,例項中有三個屬性分別為:site、url、alexa。methods 用於定義的函式,可以通過 return 來返回函式值。{{ }} 用於輸出物件屬性和函式返回值。

Vue 例項提供了一些有用的例項屬性與方法。它們都有字首 $,以便與使用者定義的屬性區分開來。例如:

<div id="vue_det">
    <h1>site : {{site}}</h1>
    <h1>url : {{url}}</h1>
    <h1>Alexa : {{alexa}}</h1>
</div>
<script type="text/javascript">
// 我們的資料物件
var data = { site: "菜鳥教程", url: "www.runoob.com", alexa: 10000}
var vm = new Vue({
    el: '#vue_det',
    data: data
})
 
document.write(vm.$data === data) // true
document.write("<br>") // true
document.write(vm.$el === document.getElementById('vue_det')) // true
</script>

2.v-html

<div id="app">
    <div v-html="message"></div>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    message: '<h1>菜鳥教程</h1>'
  }
})
</script>

蘇安年

188***[email protected]

給元素繫結href時可以也綁一個target,新視窗開啟頁面。
new

Vue({
  el: '#app',
  data: {
    url: 'http://www.runoob.com',
    target:'_blank'
  }
})

3.屬性

HTML 屬性中的值應使用 v-bind 指令。
以下例項判斷 class1 的值,如果為 true 使用 class1 類的樣式,否則不使用該類:

<div id="app">
  <label for="r1">修改顏色</label><input type="checkbox" v-model="class1" id="r1">
  <br><br>
  <div v-bind:class="{'class1': class1}">
    v-bind:class 指令
  </div>
</div>
    
<script>
new Vue({
    el: '#app',
  data:{
      class1: false
  }
});
</script>

4.表示式

<div id="app">
    {{5+5}}<br>
    {{ ok ? 'YES' : 'NO' }}<br>
    {{ message.split('').reverse().join('') }}
    <div v-bind:id="'list-' + id">菜鳥教程</div>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    ok: true,
    message: 'RUNOOB',
    id : 1
  }
})
</script>

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.runoob.com'
  }
})
</script>

在這裡 href 是引數,告知 v-bind 指令將該元素的 href 屬性與表示式 url 的值繫結。
另一個例子是 v-on 指令,它用於監聽 DOM 事件:

<a v-on:click="doSomething">

在這裡引數是監聽的事件名。

6. v-model

實現資料雙向繫結。

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

7.過濾器

<!-- 在兩個大括號中 -->
{{ message | capitalize }}

<!-- 在 v-bind 指令中 -->
<div v-bind:id="rawId | formatId"></div>

過濾器函式接受表示式的值作為第一個引數。
以下例項對輸入的字串第一個字母轉為大寫:

<div id="app">
  {{ message | capitalize }}
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    message: 'runoob'
  },
  filters: {
    capitalize: function (value) {
      if (!value) return ''
      value = value.toString()
      return value.charAt(0).toUpperCase() + value.slice(1)
    }
  }
})
</script>

過濾器可以串聯:
{{ message | filterA | filterB }}
過濾器是 JavaScript 函式,因此可以接受引數:
{{ message | filterA(‘arg1’, arg2) }}
這裡,message 是第一個引數,字串 ‘arg1’ 將傳給過濾器作為第二個引數, arg2 表示式的值將被求值然後傳給過濾器作為第三個引數。

8.縮寫

v-bind 縮寫
Vue.js 為兩個最為常用的指令提供了特別的縮寫:

<!-- 完整語法 -->
<a v-bind:href="url"></a>
<!-- 縮寫 -->
<a :href="url"></a>

v-on 縮寫

<!-- 完整語法 -->
<a v-on:click="doSomething"></a>
<!-- 縮寫 -->
<a @click="doSomething"></a>

9.vue.set

當我們給一個比如 props 中,或者 data 中被觀測的物件新增一個新的屬性的時候,不能直接新增,必須使用 Vue.set 方法。

Vue.set 方法用來新增物件的屬性。如果要增加屬性的物件是響應式的,那該方法可以確保屬性被建立後也是響應式的,同時觸發檢視更新

Vue.set(this.food,'count',1);