最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue.js每天必學之計算屬性computed與$watch

 更新時間:2016年09月05日 09:48:30   作者:i10630226  
Vue.js每天必學之計算屬性computed與$watch,為大家詳細講解計算屬性computed與$watch,感興趣的小伙伴們可以參考一下

在模板中綁定表達式是非常便利的,但是它們實際上只用于簡單的操作。模板是為了描述視圖的結(jié)構(gòu)。在模板中放入太多的邏輯會讓模板過重且難以維護。這就是為什么 Vue.js 將綁定表達式限制為一個表達式。如果需要多于一個表達式的邏輯,應當使用**計算屬性**。

 基礎例子

<div id="example">
 a={{ a }}, b={{ b }}
</div>

var vm = new Vue({
 el: '#example',
 data: {
 a: 1
 },
 computed: {
 // 一個計算屬性的 getter
 b: function () {
 // `this` 指向 vm 實例
 return this.a + 1
 }
 }
})

這里我們聲明了一個計算屬性 b。我們提供的函數(shù)將用作屬性 vm.b的 getter。

console.log(vm.b) // -> 2
vm.a = 2
console.log(vm.b) // -> 3

你可以打開瀏覽器的控制臺,修改 vm。vm.b 的值始終取決于 vm.a 的值。

你可以像綁定普通屬性一樣在模板中綁定計算屬性。Vue 知道 vm.b 依賴于 vm.a,因此當 vm.a 發(fā)生改變時,依賴于 vm.b 的綁定也會更新。而且最妙的是我們是聲明式地創(chuàng)建這種依賴關(guān)系:計算屬性的 getter 是干凈無副作用的,因此也是易于測試和理解的。

計算屬性 vs. $watch

Vue.js 提供了一個方法 $watch,它用于觀察 Vue 實例上的數(shù)據(jù)變動。當一些數(shù)據(jù)需要根據(jù)其它數(shù)據(jù)變化時, $watch 很誘人 —— 特別是如果你來自 AngularJS。不過,通常更好的辦法是使用計算屬性而不是一個命令式的 $watch 回調(diào)??紤]下面例子:

<div id="demo">{{fullName}}</div>

var vm = new Vue({
 el: '#demo',
 data: {
 firstName: 'Foo',
 lastName: 'Bar',
 fullName: 'Foo Bar'
 }
})

vm.$watch('firstName', function (val) {
 this.fullName = val + ' ' + this.lastName
})

vm.$watch('lastName', function (val) {
 this.fullName = this.firstName + ' ' + val
})

上面代碼是命令式的重復的。跟計算屬性對比:

var vm = new Vue({
 data: {
 firstName: 'Foo',
 lastName: 'Bar'
 },
 computed: {
 fullName: function () {
 return this.firstName + ' ' + this.lastName
 }
 }
})

這樣更好,不是嗎?

計算 setter

計算屬性默認只是 getter,不過在需要時你也可以提供一個 setter:

// ...
computed: {
 fullName: {
 // getter
 get: function () {
 return this.firstName + ' ' + this.lastName
 },
 // setter
 set: function (newValue) {
 var names = newValue.split(' ')
 this.firstName = names[0]
 this.lastName = names[names.length - 1]
 }
 }
}
// ...

現(xiàn)在在調(diào)用 vm.fullName = 'John Doe' 時,setter 會被調(diào)用,vm.firstName 和 vm.lastName 也會有相應更新。

本文已被整理到了《Vue.js前端組件學習教程》,歡迎大家學習閱讀。

關(guān)于vue.js組件的教程,請大家點擊專題vue.js組件學習教程進行學習。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于vue.js路由參數(shù)的實例講解——簡單易懂

    基于vue.js路由參數(shù)的實例講解——簡單易懂

    下面小編就為大家?guī)硪黄趘ue.js路由參數(shù)的實例講解——簡單易懂。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 關(guān)于vuex更新視圖引發(fā)的一些思考詳析

    關(guān)于vuex更新視圖引發(fā)的一些思考詳析

    我們在vuex中操作數(shù)據(jù)時遇見視圖不更新的情況,下面這篇文章主要給大家介紹了關(guān)于vuex更新視圖引發(fā)的一些思考,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • elementUI組件el-dropdown(踩坑)

    elementUI組件el-dropdown(踩坑)

    本文主要介紹了elementUI組件el-dropdown的一些坑,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • vue升級之路之vue-router的使用教程

    vue升級之路之vue-router的使用教程

    自動安裝的vue-router,會在src 文件夾下有個一個 router -> index.js 文件 在 index.js 中創(chuàng)建 routers 對象,引入所需的組件并配置路徑。這篇文章主要介紹了vue-router的使用,需要的朋友可以參考下
    2018-08-08
  • 用vscode開發(fā)vue應用的方法步驟

    用vscode開發(fā)vue應用的方法步驟

    這篇文章主要介紹了用vscode開發(fā)vue應用的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Vue mixins混入使用解析

    Vue mixins混入使用解析

    如果我們在每個組件中去重復定義這些屬性和方法會使得項目出現(xiàn)代碼冗余并提高了維護難度,針對這種情況官方提供了Mixins特性,這時使用Vue mixins混入有很大好處,下面就介紹下Vue mixins混入使用方法,需要的朋友參考下吧
    2023-02-02
  • vue實現(xiàn)拖拽進度條

    vue實現(xiàn)拖拽進度條

    這篇文章主要為大家詳細介紹了vue實現(xiàn)拖拽進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 詳解Vue2.X的路由管理記錄之 鉤子函數(shù)(切割流水線)

    詳解Vue2.X的路由管理記錄之 鉤子函數(shù)(切割流水線)

    本篇文章主要介紹了Vue2.X的路由管理記錄之 鉤子函數(shù)(切割流水線),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • vue使用mixins優(yōu)化組件

    vue使用mixins優(yōu)化組件

    這篇文章主要介紹了vue如何使用mixins優(yōu)化組件,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • 如何用Vite構(gòu)建工具快速創(chuàng)建Vue項目

    如何用Vite構(gòu)建工具快速創(chuàng)建Vue項目

    Vite是一個web開發(fā)構(gòu)建工具,由于其原生?ES?模塊導入方法,它允許快速提供代碼,下面這篇文章主要給大家介紹了關(guān)于如何用Vite構(gòu)建工具快速創(chuàng)建Vue項目的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評論

武强县| 剑川县| 修水县| 闵行区| 聂荣县| 资阳市| 葫芦岛市| 吉林省| 洛南县| 绍兴县| 鄯善县| 碌曲县| 剑河县| 江山市| 城口县| 曲阳县| 景德镇市| 肃南| 天峨县| 叶城县| 延津县| 特克斯县| 永寿县| 门源| 湖州市| 游戏| 阳高县| 赤峰市| 旌德县| 巢湖市| 乐平市| 庆安县| 鹤岗市| 天镇县| 沙湾县| 鄱阳县| 金寨县| 长治县| 丰宁| 海林市| 河东区|