v-bind を使用して Vue.js でクラスをバインドする場合の注意点

高洛峰
リリース: 2017-01-12 13:31:36
オリジナル
1757 人が閲覧しました

前書き

Vue.js バージョン: 1.0.27 では、Vue.js で V-bind 命令を使用してクラスとスタイルをバインドする場合、Vue.js はそれを強化しました。文字列に加えて、式の結果はオブジェクトまたは配列になることもあります。

ここでテストしたところ、次の問題が見つかりました:

オブジェクト構文を使用してクラスをバインドする場合、対応するスタイルを表すためにクラス名を引用符で囲む必要があります。そうしないと、オブジェクトのプロパティとみなされます。 、初期化エラーが発生します。

<!DOCTYPE html> 
<html> 
  
<head> 
 <meta charset="UTF-8"> 
 <title>Document</title> 
 <script src="http://cdn.bootcss.com/vue/1.0.27/vue.js"></script> 
 <style> 
 .static { 
 font-size: 120px; 
 width: 600px; 
 margin: 0 auto; 
 background-color: yellow; 
 height: 120px; 
 line-height: 120px; 
 text-align: center; 
 } 
  
 .class-a { 
 color: #FF0000; 
 } 
  
 .class-b { 
 text-decoration: underline; 
 } 
 </style> 
</head> 
  
<body> 
 <div id="app"> 
 <div v-bind:class="classObject"> 
 关于class的绑定 
 </div> 
 </div> 
 <script> 
 var vm = new Vue({ 
 el: &#39;#app&#39;, 
 data: { 
 classObject: { 
 //&#39;class-a&#39;,不能写成class-a(不带引号);这里的classObject是js对象,而class-b是代表的是一个样式,所以必须写成&#39;class-a&#39;,用引号括起来。 
 //否则这里的class-a只能代表classObject的一个属性名称而已,这样vuejs在初始化时,会报错。 
 &#39;class-a&#39;:false, 
 &#39;class-b&#39;: true 
 } 
 } 
 }); 
 </script> 
</body> 
  
</html>
ログイン後にコピー

参考:

Vue.js 公式 Web サイト----http://cn.vuejs.org/guide/class-and-style.html

補足:

ここで、コードを感じてください。これはハッシュ テーブルに似ており、キーはスタイル クラス、値はブール型の値です。

コンソールから classObject オブジェクトの class-a 値を取得および変更します。以下の図を参照してください:

v-bind を使用して Vue.js でクラスをバインドする場合の注意点

コンソールで操作を見ると、確かに classObject がハッシュ テーブル型に少し似ているように感じます。これを確認するには、ソース コードを見てください (追記: 私自身は見ていません)。

Vue.js1.0.19 では、作成者がいくつかの構文を追加しました: オブジェクト構文は配列でも使用できます:

クラス バインディング

クラス バインディング< /div>

上記では、classA は引用符の有無にかかわらず追加できます。以下は私自身のテストコードです。

<!DOCTYPE html> 
<html> 
  
<head> 
 <meta charset="UTF-8"> 
 <title>Document</title> 
 <script src="http://cdn.bootcss.com/vue/1.0.27/vue.js"></script> 
 <style> 
 .static { 
 font-size: 120px; 
 width: 600px; 
 margin: 0 auto; 
 background-color: yellow; 
 height: 120px; 
 line-height: 120px; 
 text-align: center; 
 } 
  
 .class-a { 
 color: #FF0000; 
 } 
  
 .classB { 
 text-decoration: underline; 
 } 
  
 .classC{ 
 text-shadow: 2px 2px 4px #000000; 
 } 
 </style> 
</head> 
  
<body> 
 <div id="app"> 
 <!-- 两种绑定:加引号和不加引号,都可以 --> 
 <div v-bind:class="[classA, { &#39;classB&#39;: isB, &#39;classC&#39;: isC }]">class绑定</div> 
 <div v-bind:class="[classA, { classB: isB, classC: isC }]">class绑定</div> 
 </div> 
 <script> 
 var vm = new Vue({ 
 el: &#39;#app&#39;, 
 data: { 
 classA: &#39;class-a&#39;, 
 isB: true, 
 isC: true
 } 
  
 }); 
 </script> 
</body> 
  
</html>
ログイン後にコピー

概要

以上がこの記事の内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問がございましたら、メッセージを残してご連絡ください。

Vue.js で v-bind を使用してクラスをバインドする際の注意事項に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート