摘要:與綁定數(shù)據(jù)綁定一個常見需求是操作元素的列表和它的內(nèi)聯(lián)樣式。兩者只能選其一對象語法我們可以傳給一個對象,以動態(tài)地切換。注意不支持語法。相比之下,簡單得多元素始終被編譯并保留,只是簡單地基于切換。這意味著將分別重復(fù)運(yùn)行于每個循環(huán)中。
vue Class 與 Style 綁定
綁定 HTML Class
對象語法
如下 data:
data: { isActive: true, hasError: false }
渲染為:
data: { classObject: { active: true, "text-danger": false } }
data: { isActive: true, error: null }, computed: { classObject: function () { return { active: this.isActive && !this.error, "text-danger": this.error && this.error.type === "fatal", } } }
數(shù)組語法
data: { activeClass: "active", errorClass: "text-danger" }渲染為:如果你也想根據(jù)條件切換列表中的 class ,可以用三元表達(dá)式:
此例始終添加 errorClass ,但是只有在 isActive 是 true 時添加 activeClass 。
不過,當(dāng)有多個條件 class 時這樣寫有些繁瑣。可以在數(shù)組語法中使用對象語法:
用在組件上
當(dāng)你在一個定制的組件上用到 class 屬性的時候,這些類將被添加到根元素上面,這個元素上已經(jīng)存在的類不會被覆蓋。
例如,如果你聲明了這個組件:
Vue.component("my-component", { template: "" })然后在使用它的時候添加一些 class:
HTML 最終將被渲染成為:
同樣的適用于綁定 HTML class :
當(dāng) isActive 為 true 的時候,HTML 將被渲染成為:
綁定內(nèi)聯(lián)樣式
對象語法v-bind:style 的對象語法十分直觀——看著非常像 CSS ,其實(shí)它是一個 JavaScript 對象。 CSS 屬性名可以用駝峰式(camelCase)或短橫分隔命名(kebab-case):
data: { activeColor: "red", fontSize: 30 }直接綁定到一個樣式對象通常更好,讓模板更清晰
data: { styleObject: { color: "red", fontSize: "13px" } }同樣的,對象語法常常結(jié)合返回對象的計算屬性使用。
數(shù)組語法v-bind:style 的數(shù)組語法可以將多個樣式對象應(yīng)用到一個元素上:
自動添加前綴當(dāng) v-bind:style 使用需要特定前綴的 CSS 屬性時,如 transform,Vue.js 會自動偵測并添加相應(yīng)的前綴。
條件渲染
v-ifv - if (插入 刪除節(jié)點(diǎn))
優(yōu)秀
及格
不及格
hellowroldnice to meet youif...else結(jié)構(gòu)if...else if...else結(jié)構(gòu),if-else用嵌入的方式放進(jìn)去優(yōu)秀
不及格
優(yōu)秀
及格
不及格
v-else 元素必須立即跟在 v-if 或 v-show 元素的后面——否則它不能被識別。
template v-if如果想切換多個元素,可以把一個元素當(dāng)作包裝元素,并在上面使用v-if,最終的渲染結(jié)果不會包含它。
用key管理可復(fù)用的元素 Vue 會盡可能高效地渲染元素,通常會復(fù)用已有元素而不是從頭開始渲染。這么做,除了使 Vue 變得非??熘?,還有一些有用的好處。例如,如果你允許用戶在不同的登錄方式之間切換: 這樣也不總是符合實(shí)際需求,所以 Vue 為你提供了一種方式來聲明“這兩個元素是完全獨(dú)立的——不要復(fù)用它們”。只需添加一個具有唯一值的 key 屬性即可:hellowroldnice to meet you在上面的代碼中切換 loginType 將不會清除用戶已經(jīng)輸入的內(nèi)容。因?yàn)閮蓚€模版使用了相同的元素, 不會被替換掉——僅僅是替換了它的的 placeholder Vue 為你提供了一種方式來聲明“這兩個元素是完全獨(dú)立的——不要復(fù)用它們”。只需添加一個具有唯一值的 key 屬性即可:現(xiàn)在,每次切換時,輸入框都將被重新渲染注意: 元素仍然會被高效地復(fù)用,因?yàn)樗鼈儧]有添加 key 屬性v-show 另一個用于根據(jù)條件展示元素的選項(xiàng)是 v-show 指令。用法大致一樣: 不同的是有 v-show 的元素會始終渲染并保持在 DOM 中。v-show 是簡單的切換元素的 CSS 屬性 display。注意 v-show 不支持 語法。不同的是帶有 v-show 的元素始終會被渲染并保留在 DOM 中。v-show 是簡單地切換元素的 CSS 屬性 display v-if 也是惰性的:如果在初始渲染時條件為假,則什么也不做——在條件第一次變?yōu)檎鏁r才開始局部編譯(編譯會被緩存起來)。相比之下,v-show 簡單得多——元素始終被編譯并保留,只是簡單地基于 CSS 切換。 一般來說,v-if 有更高的切換消耗而 v-show 有更高的初始渲染消耗。因此,如果需要頻繁切換 v-show 較好,如果在運(yùn)行時條件不大可能改變 v-if 較好。Hello!
v-if 和 v-for 一起使用 當(dāng) v-if 與 v-for 一起使用時,v-for 具有比 v-if 更高的優(yōu)先級。這意味著 v-if 將分別重復(fù)運(yùn)行于每個 v-for 循環(huán)中。當(dāng)你想為僅有的 一些 項(xiàng)渲染節(jié)點(diǎn)時,這種優(yōu)先級的機(jī)制會十分有用注意: v-show 不支持 語法,也不支持 v-else
- {{item.text}}
var vm=new Vue({ data:{ items:[ {text:"chifan",isOk:true}, {text:"shuijue",isOk:false}, {text:"kandianshi",isOk:true}, {text:"dayouxi",isOk:true}, {text:"kandianying",isOk:false}, ] } });如果你的目的是有條件地跳過循環(huán)的執(zhí)行,那么可以將 v-if 置于外層元素 (或 )上。列表渲染
v-for可以使用 v-for 指令基于一個數(shù)組渲染一個列表。這個指令使用特殊的語法,形式為 item in items,items 是數(shù)據(jù)數(shù)組,item 是當(dāng)前數(shù)組元素的別名:
示例 --- 直接上代碼:
- {{ item.message }}
var example1 = new Vue({ el: "#example-1", data: { items: [ { message: "Foo" }, { message: "Bar" } ] } });結(jié)果:
{% raw %} {{item.message}} {% endraw %}在 v-for 塊內(nèi)我們能完全訪問父組件作用域內(nèi)的屬性,另有一個特殊變量 $index,正如你猜到的,它是當(dāng)前數(shù)組元素的索引:
- {{ parentMessage }} - {{ $index }} - {{ item.message }}
var example2 = new Vue({ el: "#example-2", data: { parentMessage: "Parent", items: [ { message: "Foo" }, { message: "Bar" } ] } })結(jié)果:
{% raw%} {{ parentMessage }} - {{ $index }} - {{ item.message }} {% endraw %}另外,你可以為索引指定一個別名(如果 v-for 用于一個對象,則可以為對象的鍵指定一個別名):
v-for把對象屬性渲染列表{{ index }} {{ item.message }}{{value}}也可以提供第二個的參數(shù)為鍵名:{{key}} is {{value}}第三個參數(shù)為索引:{{index}}{{key}} is {{value}}數(shù)組的更新檢測
變異方法(修改了原始數(shù)組):vue.js包裝了被觀察數(shù)組的變異方法,故它們能出發(fā)視圖更新,即當(dāng)利用這些方法變更數(shù)組時,被渲染的內(nèi)容會實(shí)時更新,被包裝的方法有:
push() 數(shù)組末尾添加
pop() 數(shù)組末尾取出
shift() 數(shù)組開頭取出
unshift() 數(shù)組開頭添加
splice() 刪除并插入
sort() 排序
reverse() 數(shù)組順序顛倒
- {{item}}
替換數(shù)組(返回一個新數(shù)組): 數(shù)組從一個數(shù)組變?yōu)榱硪粋€數(shù)組時(記得,數(shù)組是按引用傳遞的),數(shù)據(jù)綁定依然生效;但前提是使用以下方法:對象更新檢測 ( 待更新……………… )filter() 過濾,參數(shù)是一個函數(shù),取其返回值為true的元素被添加到新數(shù)組
concat() 合并兩個數(shù)組,返回的數(shù)組是合并后的
slice() 返回數(shù)組的拷貝,從開始索引到結(jié)束索引(前含后不含)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85149.html
相關(guān)文章
(原創(chuàng))vue 學(xué)習(xí)筆記
摘要:菜鳥教程這是一個屬性其值是字符串菜鳥教程同上這是一個屬性其值是字符串用于定義的函數(shù),可以通過來返回函數(shù)值。它們都有前綴,以便與用戶定義的屬性區(qū)分開來。 開篇語 我最近學(xué)習(xí)了js,取得進(jìn)步,現(xiàn)在學(xué)習(xí)vue.js.建議新手學(xué)習(xí),請不要用npm的方式(vue-cli,vue腳手架),太復(fù)雜了. 請直接下載vue.js文件本地引入,就上手學(xué)習(xí)吧參照菜鳥教程網(wǎng)站的vue.js教程http://...
前端文檔收集
摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...
前端文檔收集
摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...
前端每周清單第 44 期: 2017 JS 調(diào)查報告、REST 接口實(shí)時化、ESM 的過去與未來
摘要:巔峰人生年老兵思路上的轉(zhuǎn)變,遠(yuǎn)比單純提升技術(shù)更有價值本文節(jié)選自趙成教授在極客時間開設(shè)的趙成的運(yùn)維體系管理課,是其對自己十年技術(shù)生涯的回顧與總結(jié)。趙成教授來自美麗聯(lián)合集團(tuán),集團(tuán)旗下兩大主力產(chǎn)品是蘑菇街和美麗說,目前負(fù)責(zé)管理集團(tuán)的技術(shù)服務(wù)團(tuán)隊(duì)。 showImg(https://segmentfault.com/img/remote/1460000012476504?w=1240&h=826...
發(fā)表評論
0條評論
pumpkin9
男|高級講師
TA的文章
閱讀更多
tensorflow2.4.1
閱讀 2735·2023-04-25 21:26
能讓你更早下班的Python垃圾回收機(jī)制
閱讀 1523·2021-11-25 09:43
css 特殊屬性
閱讀 1958·2019-08-30 15:52
JavaScript實(shí)現(xiàn) 滿天星 導(dǎo)航欄
閱讀 940·2019-08-30 14:05
使用H5新標(biāo)簽重構(gòu)舊項(xiàng)目時的思考
閱讀 2626·2019-08-29 16:10
canvas 實(shí)現(xiàn) github404動態(tài)效果
閱讀 422·2019-08-29 13:48
用PerformanceTiming來檢測頁面性能
閱讀 1868·2019-08-29 12:47
前端必備基礎(chǔ)
閱讀 1309·2019-08-23 18:04