Vue 監視プロパティと計算プロパティ

Vue 監視プロパティと計算プロパティ

1. 監視プロパティを監視する

このプロパティは、特定のデータの変更を監視し、対応するコールバック関数の実行をトリガーするために使用されます。

基本的な使用法: オブジェクトの値を持つwatch属性を追加します。オブジェクトの属性名は監視対象のデータであり、属性値はコールバック関数です。この属性名に対応する値が変更されるたびに、コールバック関数がトリガーされて実行されます。

コールバック関数には 2 つのパラメーターがあります。

  • newVal : データが変更された後の値。
  • oldVal : データが変更される前の値。

カウンタ:

<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8" />
  <タイトル></タイトル>
  <script src="./js/vue.js"></script>
 </head>
 <本文>
  <div id="アプリ">
   <div>カウンター {{ shu }}</div>
   <span>変更前: {{ov}}</span>
   <span>変更後: {{nv}}</span>
   <br />
   <button @click="shu++">1つ追加</button>
  </div>
  
  <スクリプト>
  var vm = 新しい Vue({
   el: '#app',
   データ: {
    シュウ:1、
    ov:0,
    0 です
   },
   方法:{
    
   }
  })
  vm.$watch("shu",function(nval,oval){
   vm.$data.ov = 楕円
   vm.$data.nv = nval
  })
  </スクリプト>
 </本文>
</html>

リスナーを追加し、カウンターの値が変更される前の値を変数ovに割り当て、変更後の値を変数nvに割り当てます。

  vm.$watch("shu",function(nval,oval){
   vm.$data.ov = 楕円
   vm.$data.nv = nval
  })


1.

1. ショッピングカート

<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8">
  <タイトル></タイトル>
  <script src="./js/vue.js"></script>
 </head>
 <本文>
  <div id="アプリ">
  <テーブル>
   <tr>
    <th>シリアル番号</th>
    <th>製品名</th>
    <th>製品価格</th>
    <th>購入数量</th>
    <th>オペレーション</th>
   </tr>
   <tr v-for="sp 内の sp">
    <td>{{ sp.id }}</td>
    <td>{{ sp.name }}</td>
    <td>{{ sp.money }}</td>
    <td>
    <button v-on:click="sp.sum=sp.sum-1">-</button>
    {{sp.sum}}
    <button v-on:click="sp.sum=sp.sum+1">+</button>
    </td>
    <td>
     <button v-on:click="sp.sum=0">リセット</button>
    </td>
   </tr>
  </テーブル>
  <div> 要素
   合計金額: {{ getmany() }}
  </div>
  </div>
  <スクリプト>
   var vm = 新しい Vue({
    el: '#app',
    データ: {
     補足:[
      {
       id:1,
       名前:"Apple 13",
       お金:6000、
       合計:1
      },
      {
       id:2,
       名前:"Apple 12",
       お金:5000、
       合計:1
      },
      {
       id:3,
       名前:"Apple 11",
       お金:4000、
       合計:1
      }
     ]
    },
    方法:{
     getmaney:関数(){
      var m = 0;
      for(var x=0;x<this.sps.length;x++){
       m = m + this.sps[x].money * this.sps[x].sum;
      }
      m を返します。
     }
    }
   })
  </スクリプト>
 </本文>
</html>

合計費用は以下のとおりです。

getmaney:関数(){
    var m = 0;
    for(var x=0;x<this.sps.length;x++){
   m = m + this.sps[x].money * this.sps[x].sum;
 }
 m を返します。
}


2. すべて選択し、すべて選択解除する

<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8">
  <タイトル></タイトル>
  <script src="./js/vue.js"></script>
 </head>
 <本文>
  <div id="アプリ">
   <input type="checkbox" id="a" value="a" v-model="che"/>
   <label for="a">a</label>
   <input type="checkbox" id="b" value="b" v-model="che"/>
   <label for="b">b</label>
   <input type="checkbox" v-model="checked" id="bok" v-on:change="ckall()" />
   <label for="box">すべて選択</label>
  </div>
  <スクリプト>
   var vm = 新しい Vue({
    el: '#app',
    データ: {
     チェック済み:false、
     che:[],
     しゅず:["a","b"]
    },
    方法:{
     ccall:関数(){
      //すべてのステータスを選択 if(this.checked){
       this.che = this.shuzu
      }それ以外{
       //すべての選択を解除 this.che=[]
      }
     }
    },
    時計:{
     "che":関数(){
      //すべて選択するかどうかを判定する if(this.che.length == this.shuzu.length){
       this.checked = true
      }それ以外{
       this.checked = false
      }
     }
    }
   })
  </スクリプト>
 </本文>
</html>

2. 計算されたプロパティ

1.計算された

特徴:

  • computedプロパティ オブジェクトでプロパティを計算する方法を定義し、ページ上で {{method name}} を使用して計算結果を表示します。
  • getter/setterを通じてプロパティ データを表示および監視します。
  • 計算されたプロパティはキャッシュされ、 getter複数の読み取りに対して 1 回だけ実行されます。
<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8">
  <タイトル></タイトル>
  <script src="./js/vue.js"></script>
 </head>
 <本文>
  <div id="アプリ">
   <p>{{ 混乱 }}</p>
   <p>{{ レメス }}</p>
   <p>{{ mess.split('').reverse().join('') }}</p>
  </div>
  <スクリプト>
   var vm = 新しい Vue({
    el: '#app',
    データ:{
     混乱:'abcd'
    },
    計算: {
     remess:関数(){
      this.mess.split('').reverse().join('') を返します
     }
    }
   })
  </スクリプト>
 </本文>
</html>

2.方法

computed依存関係キャッシュに基づいて行われ、関連する依存関係が変更された場合にのみ再評価されます。 methodsを使用すると、再レンダリング時に関数が常に再度呼び出されます。

<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8">
  <タイトル></タイトル>
  <script src="./js/vue.js"></script>
 </head>
 <本文>
  <div id="アプリ">
   <input v-model="mess" />
   <p>{{ 混乱 }}</p>
   <p>{{ レメス }}</p>
   <p>{{ remess2() }}</p>
  </div>
  <スクリプト>
   var vm = 新しい Vue({
    el: '#app',
    データ:{
     混乱:'abcd'
    },
    計算: {
     remess:関数(){
      this.mess.split('').reverse().join('') を返します
     }
    },
    メソッド: {
     remess2:関数(){
      this.mess.split('').reverse().join('') を返します
     }
    }
   })
  </スクリプト>
 </本文>
</html>

3. セッター

ページが特定のデータを取得すると、まずデータ内を検索します。データが見つからない場合は、計算属性内を検索します。計算属性内のデータを取得すると、get メソッドが自動的に実行され、set メソッドも提供されます。 computedプロパティにはデフォルトではgetterのみがありますが、必要に応じてセッターを提供することもできます。

<!DOCTYPE html>
<html>
 <ヘッド>
  <メタ文字セット="utf-8">
  <タイトル></タイトル>
  <script src="./js/vue.js"></script>
 </head>
 <本文>
  <div id="アプリ">
   <p>{{ サイト }}</p>
  </div>
  <スクリプト>
   var vm = 新しい Vue({
    el: '#app',
    データ: {
     名前: 'xiaowang',
     '01' の
    },
    計算:{
     サイト:{
      取得: 関数(){
       this.name+' '+this.cls を返す
      },
      設定: 関数(値){
       var names = Value.split('|')
       this.name = 名前[0]
       this.cls = 名前[1]
      }
     }
    }
   })
   vm.site = 'xiaowang|01';
   document.write('name:'+vm.name);
   document.write('<br>');
   document.write('class:'+vm.cls);
  </スクリプト>
 </本文>
</html>

Vue リスニング プロパティと計算プロパティに関するこの記事はこれで終わりです。Vue リスニング プロパティと計算プロパティに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue 計算プロパティ実装トランスクリプト
  • Vue の計算プロパティとプロパティリスニングについての簡単な説明
  • Vue の計算プロパティ
  • Vue の計算プロパティの紹介
  • Vueは計算プロパティを使用して動的スライダーの作成を完了します
  • Vue の計算プロパティとデータ取得方法
  • Vue の計算プロパティをご存知ですか?
  • Vueの計算プロパティ名ケースの3つの実装方法

<<:  自動検索提案機能のスタイルファイルを入力します: suggestion.css

>>:  CSSは2つの要素をブレンドする効果(スティッキー効果)を実現します。

推薦する

さまざまな解像度やブラウザでウェブページを適切に表示する方法

キーコードは次のとおりです。コードをコピーコードは次のとおりです。 html{高さ:100%; }コ...

MySQL データベースの最適化に関する 9 つのヒント

目次1. 最も適切なフィールド属性を選択する2. フィールドをNOT NULLに設定してみる3. サ...

IDEA を使用して Web プロジェクトを作成し、Tomcat に公開する方法

目次ウェブ開発1. Web開発の概要Tomcatのインストールと設定Tomcatをインストールする2...

HTML いくつかの特別な分割線効果

1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...

LinuxでifconfigとaddrがIPアドレスを表示できない問題を解決する

1. 仮想マシンにLinuxシステムをインストールし、仮想マシンを起動し、rootとパスワードを入力...

指定フィールドによるMySQLカスタムリストのソートの実装

問題の説明ご存知のとおり、MySQL でフィールドを昇順に並べ替える SQL は次のとおりです (i...

デジタルテーブル特殊効果を実現するネイティブJS

この記事では、ネイティブ JS で実装されたデジタル時計エフェクトを紹介します。エフェクトは次のとお...

Vueカスタムコンポーネントは双方向バインディングを実装します

シナリオ:一般的に使用される親コンポーネントと子コンポーネント間の相互作用方法は次のとおりです。親コ...

MySQL query_cache_type パラメータと使用方法の詳細

MySQL クエリ キャッシュを設定する目的は次のとおりです。クエリ結果をキャッシュしておくと、次回...

MySQLのサブクエリユニオンの効率性についての簡単な説明と

最近の製品テストでは、同時呼び出し数が 10 未満の場合に応答時間が 100 ミリ秒以内に維持できな...

MySQLの最適化の詳細な分析とパフォーマンス

導入データベースを使用したことがある人なら、機能面での like 記号と = 記号の類似点と相違点を...

Linux は、Deepin がルートユーザーとして Google Chrome ブラウザを起動できない問題を解決します

Deepin がルートユーザーとして Google Chrome ブラウザを起動できない問題を解決す...

Nginx の add_header ディレクティブに注意する必要があるのはなぜですか?

序文ご存知のとおり、nginx 構成ファイルは add_header ディレクティブを使用して応答ヘ...

MySQLストアドプロシージャの原理と使用法の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャの原理と使用方法を説明します。ご参考ま...