首頁 web前端 js教程 怎樣進行vue.js資料綁定操作

怎樣進行vue.js資料綁定操作

Jun 02, 2018 am 11:21 AM
javascript vue.js 進行

這次帶給大家怎樣進行vue.js資料綁定操作,進行vue.js資料綁定操作的注意事項有哪些,下面就是實戰案例,一起來看一下。

資料綁定

響應式的資料綁定係統。建立綁定之後,​​DOM將和資料保持同步,無須手動維護DOM。使程式碼更簡潔易懂、提升效率。

資料綁定語法

#1.文字內插

{{ }}Mustache標籤

<span>Hello {{ name }}</span>
登入後複製
data:{
    name: 'vue'
}
== > Hello vue
登入後複製

單次插值

#首次賦值後再更改vm實例屬性值不會造成DOM的變化

<span v-once="name">{{ name }}</span>
登入後複製

# 2.HTML屬性

Mustache標籤{{ }}

<p v-bind:id="&#39;id-&#39;+id"></p>
登入後複製

#簡單寫:

<p :id="&#39;id-&#39;+id"></p>
登入後複製

3.綁定表達式

#放在Mustache標籤內的文字內容。除了直接輸出屬性值之外,一段綁定表達式可以由一個簡單的JavaScript表達式和可選的一個或多個過濾器構成(不支援正規表示式,若需要複雜的轉換,則使用過濾器或計算屬性來進行處理)。

{{ index + 1}}
{{ index == 0 ? 'a' : 'b' }}
{{name.split('').join('|') }}
{{ var a = 1 }} //无效
登入後複製

4.過濾器

vue.js允許在表達式後新增可選的過濾器,以管道符"|"指示。

{{ name | uppercase }} // Vue.js将name的值传入给uppercase这个内置的过滤器中(本质是一个函数),返回字符串的大写值。
{{ name | filterA | filterB }}  //多个过滤器链式使用
{{ name | filterA arg1 arg2 }} //传入多个参数
登入後複製

此時,filterA將name的值做成第一個參數,arg1,arg2做為第二、第三個參數傳入過濾器函數中。

最終函數的回傳值即為輸出結果。 arg1,arg2可以使用表達式,也可以加上單引號,直接傳入字串。

例如:

{{ name.split('') | limitBy 3 1 }} // ->u,e
登入後複製

過濾器limitBy可以接受兩個參數,第一個參數是設定顯示個數,第二個參數為可選,指從開始元素的陣列下標。

vue.js內建的10個篩選器(Vue.js2.0中移除)

capitalize:字串首字轉換為大寫。
uppercase:字串轉換為大寫。
lowercase:字串轉換為小寫。
currency:參數為{String}[貨幣符號],{Number}[小數位],將數字轉換成貨幣符號,並且會自動加上數字分節號。

{{ amount | currency '¥' 2 }} //若amount值为1000,则输出为¥1,000.00
登入後複製

pluralize:參數為{String}single,[double,triple],字串複數化。

<p v-for="c in count">{{ c | pluralize 'item' }} {{ c | pliralize 'st' 'nd' 'rd' 'th' }} </p>
登入後複製
//输出结果:
1item 1st
2items 2nd
3items 3rd
4items 4th
登入後複製

json:參數為{Number}[indent]空格縮排數,將json物件資料輸出成符合json格式的字串。

debounce:傳入值必須是函數,參數可選,為{Number}[wait],即延遲時長。作用是當呼叫函數n毫秒後,才會執行該動作。

<input v-on:keyup="onKeyup | debounce 500"> //input元素上监听了keyup事件,并且延迟500ms触发
登入後複製

limitBy:傳入值必須是數組,參數為{Number}limit{Number}[offset],limit為顯示個數,offset為開始顯示陣列下標。

<p v-for="item in items | limitBy 10"></p> //items为数组,且只显示数组中的前十个元素
登入後複製

filterBy:傳入值必須是數組,參數為{String | Function}targetStringOrFunction,即需要匹配的字串或函數;"in"可選分隔符號。 {String}[...searchKeys],為檢索的屬性區域。

<p v-for="name in names | filterBy &#39;1.0&#39;">{{ name }}</p> //检索names数组中值包含1.0的元素
<p v-for="item in items | filterBy &#39;1.0&#39; in &#39;name&#39;">{{ item | json }}</p> //检索items中元素属性name值为1.0的元素输出。检索区域也可以为数组,即in [name,version],在多个属性中进行检索。
登入後複製
//输出结果
vue1.0
{"name":"vue1.0","version":"1.0"}
登入後複製

使用自訂的過濾函數,函數可以在選項methods中定義

<p v-for="item in items | filterBy customFilter"
  methods:{
    cuestomFilter:function(item){
      if(item.name) return true;  //检索所有元素中包含name属性的元素
    }
  }
登入後複製

orderBy:傳入值必須是數組,參數為{String |Array|Function}sortKeys,即指定排序的策略。

單一鍵名:

<p v-for="item in items | orderBy &#39;name&#39; -1">{{ item.name}}</p> //items数组中以键名name进行降序排列
登入後複製

多個鍵名:

<p v-for="item in items | orderBy [name,version]">{{item.name}}</p> //使用items里的两个键名进行排序
登入後複製

#自訂排序函數:

<p v-for="item in items | orderBy customOrder">{{item.name}}</p>
methods:{
  customOrder: function(a,b){
    return parseFloat(a.version) > parseFloat(b.version) //对比item中version的值的大小进行排序
  }
}
登入後複製

#5.指令

指令的值限定為綁定表達式,也就是當表達式的值改變時,會有些特殊行為作用到綁定的DOM上。

參數:src為參數

<img v-bind:src="avatar" /> <==>  <img src="{{avatar}}" />
登入後複製

修饰符:以半角句号.开始的特殊后缀,用于表示指令应该以特殊方式绑定。

<button v-on:click.stop="doClick"></button> //stop:停止冒泡。相当于调用了e.stopPropagagation().
登入後複製

计算属性

避免在模板中加入过重的业务逻辑,保证模版的结构清晰和可维护性。

1.基础例子

var vm = new Vue({
    el: '#app',
    data: {
      firstName:'Gavin',
      lastName:'CLY'
    },
    computed: {
      fullName:function(){
        //this指向vm实例
        return this.firstName + ' ' + this.lastName;
      }
    }
})
登入後複製
<p>{{ firstName }}</p>  //Gavin
<p>{{ lastName }}</p>  //CLY
<p>{{ fullName }}</p>  //Gavin CLY
登入後複製

注:此时对vm.firstNamevm.lastName进行修改,始终会影响vm.fullName

2.Setter

更新属性时带来便利

var vm = new Vue({
    el:'#el',
    data:{
      cents:100
    },
    computed:{
      price:{
        set:function(newValue) {
          this.cents = newValue * 100;
        },
        get:function(){
          return (this.cents / 100).toFixed(2);
        }
      }
    }
})
登入後複製

表单控件

v-model:对表单元素进行双向数据绑定,在修改表单元素值时,实例vm中对应的属性值也同时更新,反之亦然。

var vm = new Vue({
    el:'#app',
    data: {
      message: '',
      gender: '',
      cheched: '',
      multiChecked: '',
      a: 'checked',
      b: 'checked'
    }
})
登入後複製

1. Text

输入框示例,用户输入的内容和vm.message直接绑定:

<input type="text" v-model="message" />
<span>Your input is : {{ message }} </span>
登入後複製

2. Radio

单选框示例:

<label><input type="radio" value="male" v-model="gender">男</lable>
<label><input type="radio" value="famale" v-model="gender">女</lable>
<p>{{ gender }}</p> //显示的是value值
登入後複製

3.Checkbox

单个勾选框,v-model即为布尔值,此时Input的value并不影响v-model的值。

<input type="checkbox" v-model="checked" />
<span>checked: {{ checked }} </span> //显示的是true/false
登入後複製

多个勾选框,v-model使用相同的属性名称,且属性为数组。

<label><input type="checkbox" value="1" v-model="multiChecked">1</label>
<label><input type="checkbox" value="1" v-model="multiChecked">2</label>
<label><input type="checkbox" value="1" v-model="multiChecked">3</label>
<p>MultiChecked:{{ multiChecked.join{'|'} }}</p> //multiChecked:1|2
登入後複製

4.Select

单选

<select v-model="selected">
  <option selected>A</option>
  <option>B</option>
  <option>C</option>
</select>
<span>Selected: {{ selected }}</span>
登入後複製

多选

<select v-model="multiSelected" multiple>
  <option selected>A</option>
  <option>B</option>
  <option>C</option>
</select>
<span>MultiSelected: {{ multiSelected.join('|') }}</span>
登入後複製

5.绑定value

通过v-bind实现,表单控件的值绑定到Vue市里的动态属性上。

Checkbox

<input type="checkbox" v-model="checked" v-bind:true-value="a" v-bind:false-value="b" />
登入後複製

选中:

vm.checked == vm.a  //=> true
登入後複製

未选中:

vm.checked == vm.b //=>true
登入後複製

Radio

<input type="radio" v-model="checked" v-bind:value="a" >
登入後複製

选中:

vm.checked == vm.a //=> true
登入後複製

3.Select Options

<select v-model="selected">
    <!-- 对象字面量 -->
    <option v-bind:value="{ number:123}">123</option>
</select>
登入後複製

选中:

typeof vm.selected //=> object
vm.selected.number //=> 123
登入後複製

6.参数特性

.lazy:默认情况下,v-model在input事件中同步输入框与数据,加lazy属性后会在change事件中同步。

<!-- 在 "change" 而不是 "input" 事件中更新 -->
<input v-model.lazy="msg" >
登入後複製

.number:自动将用户输入转为Number类型,如果原值转换结果为NaN,则返回原值。

<input v-model.number="age" type="number">
登入後複製

.trim:如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入

<input v-model.trim="msg">
登入後複製

Class与Style绑定

1.Class绑定

对象语法:v-bind:class接受参数是一个对象,而且可以与普通的class属性共存。

<p class="tab" v-bind:class="{&#39;active&#39;:active,&#39;unactive&#39;:!active}"></p>
登入後複製

vm实例中需要包含:

data:{
  active:true
}
登入後複製

渲染结果为:

<p class="tab active"></p>
登入後複製

数组语法:v-bind:class也接受数组作为参数。

<p v-bind:class="[classA,classB]"></p>
登入後複製

vm实例中需要包括:

data:{
  classA:"class-a",
  classB:"class-b"
}
登入後複製

渲染结果为:

<p class="class-a class-b"></p>
登入後複製

使用三元表达式切换数组中的class

<p v-bind:class="[classA,isB?classB:""]"></p>
登入後複製

vm.isB = false
登入後複製

则渲染结果为

<p class="class-a"></p>
登入後複製

2.内联样式绑定(style属性绑定)

对象语法:直接绑定符合样式格式的对象。

<p v-bind:style="alertStyle"></p>
登入後複製

vm实例中包含:

data:{
  alertStyle:{
    color: 'red',
    fontSize: '2px'
  }
}
登入後複製
<p v-bind:style="{fontSize:alertStyle.fontSize,color:&#39;red&#39;}"></p>
登入後複製

数组语法:v-bind:style允许将多个样式对象绑定到同一元素上。

<p v-bind:style="[ styleObjectA,styleObjectB]" .></p>
登入後複製

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

如何使用react配合antd组件实现管理系统

js图片转base64方法总结

以上是怎樣進行vue.js資料綁定操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

JavaScript與WebSocket:打造高效率的即時影像處理系統 JavaScript與WebSocket:打造高效率的即時影像處理系統 Dec 17, 2023 am 08:41 AM

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務

See all articles