1. 程式人生 > >Vuejs——(4)v-if、v-for

Vuejs——(4)v-if、v-for

(二十)v-if

①標準v-if用法

簡單來說,該值為true則顯示該標籤,為false則不顯示;

如例:

[javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. <div id="app">  
  2.     <div v-if="abc">{{abc.a}}</div>  
  3. </div>  
  4. <script>  
  5.     var vm = new Vue({  
  6.         el: '#app',  
  7.         data: {  
  8.             abc: {  
  9.                 a: "1"
  10.             }  
  11.         }  
  12.     })<pre name="code"class="javascript">  

</script>

當abc這個物件存在時,顯示這一行資料,其內容為abc.a的值;

假如abc這個物件不存在,那麼則不顯示;

也可以用另外一個變數來控制其是否顯示(能否顯示決定於該值隱式轉換為boolean型別時是true還是false);

例如假如上面有abc這個物件,但這個物件是空物件(沒有屬性a),但空物件隱式轉換後為true,因此會有div,但這個div裡沒有內容;

②template v-if 包裝以同時影響多個html標籤;

即假如多個標籤(且他們是連續的),被一個變數控制是否顯示,那麼每個都這麼寫顯然太繁瑣,因此用一個template標籤將這些標籤包裹起來,用v-if標籤控制該template標籤是否顯示,實際渲染時,template標籤不會顯示,只會顯示其內的標籤;

如示例:

[javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. <div id="app">  
  2.     <template v-if="abc">  
  3.         <div>{{abc[0]}}</div>  
  4.         <div>{{abc[1]}}</div>  
  5.         <div>{{abc[2]}}</div>  
  6.     </template>  
  7. </div>  
  8. <script>  
  9.     var vm = new Vue({  
  10.         el: '#app',  
  11.         data: {  
  12.             abc: [1, 2, 3]  
  13.         }  
  14.     })  
  15. </script>  

由於非空陣列是值為true,空陣列的值為false,因此方便控制;

另外,這裡只是演示,事實上更好的寫法的v-for來控制內部三個標籤來同時顯示(當然,如果不需要顯示全部的則不應該這麼寫);

顯示內容:

<divid="app">

    <div>1</div>

    <div>2</div>

    <div>3</div>

</div>

③v-show     用於控制該標籤的display樣式

他的特點是,dom存在於頁面內,已經渲染、事件繫結完畢,區別只是是否顯示。

例如:

[javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. <div v-show="a">{{test}}</div>  

a的值為true,則正常顯示;

a的值為false,則自動新增display:none

v-show不支援template寫法(即不能同時控制多個同級連續div);

④v-else v-if和v-show的補充語句;

即v-if和v-show的判斷為true時,不顯示v-else標籤的內容;否則顯示v-else標籤的內容。

例如:

[javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. <div id="app">  
  2.     <div v-show="a">{{test}}</div>  
  3.     <div v-else>def</div>  
  4. </div>  
  5. <script>  
  6.     var vm = new Vue({  
  7.         el: '#app',  
  8.         data: {  
  9.             a: true,  
  10.             test: "abc"
  11.         }  
  12.     })  
  13. </script>  

顯示abc;

若把data中的a改為false,則顯示def;

另外,標籤之間需要連續,如以下,v-else則不能正常生效:

[javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. <div v-show="a">{{test}}</div>  
  2. <div>another</div>  
  3. <div v-else>def</div>  

另外,不要在元件的情況下使用v-else,而是採用v-show=”!變數名來變相起到v-else的效果

⑤v-if和v-show的比較

v-if

v-show

渲染時間

第一次為真時

剛開始就渲染

切換形式

動態生成,區域性編譯/解除安裝

控制display屬性

生成消耗

較小(只生成為真的部分)

較大(生成全部)

切換消耗

較大(切換時需要區域性編譯)

較小(因為生成時已經渲染完成)


v-if是在第一次條件為真時,進行渲染(比如他下面還有其他元件);

v-show因為只是控制display的屬性,因此開始就會渲染;

(二十一)v-for列表渲染

①標準寫法

[javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. <li v-for="i in items">{{i}}</li>  

【1】items是一個物件或者陣列;

【2】該格式相當於for(var i in items){//略}

【3】插值的i相當於items[i]

【4】該li會被複制多個,然後依次被items[i]渲染,直到渲染完畢;

示例:

  1. <divid="app">
  2.     <ul>
  3.         <liv-for="i in items">{{i}}</li>
  4.     </ul>
  5. </div>
  6. <script>
  7.     var vm = new Vue({  
  8.         el: '#app',  
  9.         data: {  
  10.             items: {  
  11.                 a: "1",  
  12.                 b: "2",  
  13.                 c: "3"  
  14.             }  
  15.         }  
  16.     })  
  17. </script>

結果:

<divid="app">

    <ul>

        <li>1</li>

        <li>2</li>

        <li>3</li>

    </ul>

</div>

②索引編號:

在標籤裡使用$index,即表示當前索引在v-for中的編號(從0開始);

例如上面改為:

[javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. <li v-for="i in items">{{i}}'s index is {{$index}}</li>  
顯示的是從0~2

③template v-for 用於包裹多個標籤的v-for

簡單來說,需要將多個標籤都用v-for遍歷,那麼就需要用template標籤。

同樣,template在實際渲染的時候不會出現,只是起到一個包裹作用。

如程式碼:

異常4----通過throwthrows關鍵字寫帶有異常的方法

二、throws關鍵字 三、自己寫方法丟擲異常 四、舉例 一、throw關鍵字 關鍵字throw,用於在方法的內部丟擲異常。 throw丟擲的是異常的物件。throw後面,必須寫 new 物件(Exception或Exception

jQuery原始碼解析4—— css樣式定位屬性

閒話 原計劃是沒有這篇博文的,研究animation原始碼的時候遇到了css樣式這個攔路虎。比如jQuery支援“+=10”、“+=10px”定義一個屬性的增量,但是有的屬性設定時可以支援數字,有的必須有單位;在對屬性當前值讀取時,不同的瀏覽器可能返回不同的單

C#中的方法傳參與switchif結構4

判斷 1.2 菱形 條件表達式 執行 代碼 輸出 分類 簡易 一、方法傳參的2種方式    1、按值傳遞       傳遞的是值的副本,值會更改但未保留,值最終並未更改     2、按引用傳遞(形參用ref關鍵字修飾)【P86頁】 傳遞的是地址,值會更改且保留,值最終更改

Vue條件渲染v-ifv-show的區別

在專案中我們總是用到根據某一值判斷屬性是否顯示,或不同的值讓其顯示不同,顧名思義總是用v-if來實現,v-show也可用來判斷是否顯示,兩者有什麼區別呢? 相同點:兩者都可用作為條件判斷元素是否顯示。 不同點:1). v-if後可跟v-else-if 和 v-else用來

oracle系統表v$sessionv$sql欄位說明

在本檢視中,每一個連線到資料庫例項中的 session都擁有一條記錄。包括使用者 session及後臺程序如 DBWR, LGWR, arcchiver等等。 V$SESSION中的常用列 V$SESSION是基礎資訊檢視,用於找尋使用者 SID或 SADDR。不過,它也有一些列會動態的變化,可用於檢查

Vuejs14——在v-for中,利用index來對第一項新增class

<aclass="list-group-item":class="{'active':!index}"v-for="(i,index) in announcement"> index來源於v-for,i表示遍歷的陣列的元素,index表示索引。 由於index從0開始,因此如果要