Vue.js 計算屬性

来源:https://www.cnblogs.com/chenyingying0/archive/2020/02/28/12377507.html
-Advertisement-
Play Games

計算屬性關鍵詞: computed。 計算屬性在處理一些複雜邏輯時是很有用的。 下麵是字元串反轉的一些寫法,看起來有點複雜 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>demo</title> </head> <body> ...


計算屬性關鍵詞: computed。

計算屬性在處理一些複雜邏輯時是很有用的。

下麵是字元串反轉的一些寫法,看起來有點複雜

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>demo</title>
</head>
<body>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>

<div id="demo">
  {{ message.split('').reverse().join('') }}
</div>

<script>
  new Vue({
    el: '#demo',
    data: {
      message:"cyy"
    },
    methods:{

    },
    filters:{//過濾器

    }
  })
</script>

 

 

 接下來是使用了計算屬性的實例:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>demo</title>
</head>
<body>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>

<div id="demo">
  {{message}}
  {{remessage}}
</div>

<script>
  new Vue({
    el: '#demo',
    data: {
      message:"cyy"
    },
    computed: {
      // 計算屬性的 getter
      remessage: function () {
        return this.message.split("").reverse().join("")
      }
    }
  })
</script>

 

 

 

實例 2 中聲明瞭一個計算屬性 remessage。

提供的函數將用作屬性 vm.remessage 的 getter 。

vm.rremessage 依賴於 vm.message,在 vm.message 發生改變時,vm.remessage 也會更新。

 

computed和methods的異同:

可以使用 methods 來替代 computed,效果上兩個都是一樣的

但是 computed 是基於它的依賴緩存,只有相關依賴發生改變時才會重新取值

而使用 methods ,在重新渲染的時候,函數總會重新調用執行

可以說使用 computed 性能會更好,但是如果你不希望緩存,你可以使用 methods 屬性。


 

computed 屬性預設只有 getter ,不過在需要時你也可以提供一個 setter :

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>demo</title>
</head>
<body>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>

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

<script>
  var vm=new Vue({
    el: '#demo',
    data: {
      name:"cyy",
      course:"學vue"
    },
    computed: {
      // 計算屬性的 getter
      site: {
        //getter
        get:function(){
          return this.name+this.course
        },
        //setter
        set:function(data){
          var arr=data.split(" ")
          this.name=arr[0]
          this.course=arr[1]
        }
      }
    }
  })

  vm.site="cyy2 也在學習vue呢"
  document.write(vm.name+"<br>"+vm.course)
</script>

 

 

 在運行 vm.site = 'cyy2 也在學習vue呢'; 時,setter 會被調用, vm.name 和 vm.url 也會被對應更新

如果沒有設置set,那麼vm.name 和 vm.url 不會被對應更新

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>demo</title>
</head>
<body>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>

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

<script>
  var vm=new Vue({
    el: '#demo',
    data: {
      name:"cyy",
      course:"學vue"
    },
    computed: {
      // 計算屬性的 getter
      site: function(){
        //getter
        return this.name+this.course
      }
    }
  })

  vm.site="cyy2 也在學習vue呢"
  document.write(vm.name+"<br>"+vm.course)
</script>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 搞了一天終於搞定了 用node上傳圖片到七牛 代碼如下: const qiniu_sdk = require('qiniu') qiniu_sdk.conf.ACCESS_KEY = '***********************'; qiniu_sdk.conf.SECRET_KEY = '** ...
  • 效果圖 slider.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>slider</title> <link rel="stylesheet" href="../css/base.css"> <l ...
  • (寫在前面:想著本身也會整理,不如把整理的內容放到博客里,能幫助到檢索這篇博客的人一點點也好。沒想到之前寫的一點內容也有人瀏覽,挺驚訝的,這幾天多整理一些之前寫的本地筆記上傳吧。) if 練習1 小結: ① else if條件累贅了; ② 需要判斷值是否合法// 空字元轉換為數值是0; ③ prom ...
  • 在js函數與作用域,瞭解函數基本概念中,我們發現當函數的實參有一個沒有上傳的時候,對應的形參time展示的值就是undefined,那麼如何在不上傳time的情況下,解決這個預設值了?方法2種:1.if(time==undefined) 2. time=7;除此之外,函數的另外一個重要特征動態參數a... ...
  • nodejs不支持使用atob和btoa 進行字元串base64轉換,轉換方法如下: // 轉為base64 var strToBase64 = new Buffer('aaabbbccc').toString('base64'); // base64反解析為字元串 var base64ToStr ...
  • chrome的開發者工具,在source選項卡下,可以看到js的源代碼,有一個斷點調試功能,就是在js的源代碼行號那裡點擊一下,出現一個箭頭,當再次刷新頁面並且進行了相應操作時,就會停在斷點的地方。我們可以查看相應的變數值,在右側可以手動改變變數值,進行調試。 這個地方有一個缺點,就是沒有辦法對代碼 ...
  • html標簽預設在瀏覽器中展示的樣式,html標簽的用途:語義化(明白每個標簽的用途,在什麼情況下使用此標簽合理);標簽語義化好處:1.更容易被搜索引擎收錄2.更容易讓屏幕閱讀器讀出網頁內容。html常見標簽諸如:文本段落<p>,標題<h1-h6>,空格 換行<br/>,強調<strong>or<e... ...
  • 可以通過 watch 來響應數據的變化 以下實例通過使用 watch 實現計數器: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>demo</title> </head> <body> <script src="https:/ ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...