vue 點擊li 中的img 怎么不冒泡_Vue全解

一.Vue實例

內存圖:

0a85c0b5bb0cf23102108762a11de666.png
1.把Vue的實例命名為vm,vm對象封裝了對視圖的所有操作包括數據讀寫、事件綁定、DOM更新
2.vm的構造函數是Vue,按照ES6的說法vm所屬的類是Vue
3.options是new Vue的參數一般稱為選項構造選項

1.options里面有什么

  • 英文文檔搜options中文文檔搜選項即可得相關所有文檔
  • options的五類屬性
★數據:data,props,propsData,computed,methods,watch
★Dom:el,template,render,renderError
★生命周期鉤子:beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,activated,deactivated,beforeDestroy,destroyed,errorCaptured
★資源:directives,filters,components
★組合:parent,mixins,extends,provide,inject
★其他

template(HTML模板)語法:

4179b9b98f231b9dd7ea641d74178f44.png

b8c4ae4f2448d5253b1401c49a0a0e52.png

336bd625db9632907398d9bea2ab2d41.png
  1. 展示內容:

表達式

★{{ object.a }}表達式

★{{ n+1 }}可以寫任何運算符

★{{ fn(n) }}可以調用函數

★如果值為undefined或者null就不顯示

★另一種寫法為<div v-text="表達式"></div>

HTML內容

★假設data.x的值為<strong>hi</strong>

★<div v-html="data.x"></div>即可顯示粗體的hi

我就想展示{{ n }}

★<div v-pre>{{ n }}</div>

★v-pre不會對模板進行編譯

2.綁定屬性:

★綁定src:<img v-bind:src="x"/>

★v-bind:簡寫為:<img :src="x"/>

★綁定對象:
<div :style="{border:'1px solid red',height:100}"</div>
//注意這里把'100px’寫成100

3.綁定事件:

★v-on:事件名

<button v-on:click="add">+1</button>//點擊之后,Vue會運行add()
<button v-on:click="xxx(1)">xxx</button>//點擊之后,Vue會運行xxx(1)
<button v-on:click="n+=1">xxx</button>//點擊之后,Vue會運行n+=1
//即發現函數就加括號調用之,否則直接運行代碼

★縮寫

<button @click="add">+1</button>//正常人都用縮寫

4.條件判斷:

★if...else

<div v-if="x>0">x大于0</div>
<div v-else-if="x===0">x等于0</div>
<div v-else>x小于0</div>

5.循環:

★for(value,key) in 對象或數組

<ul>
<li v-for="(u,index) in users" :key="index">
索引:{{index}} 值{{u.name}}
</li>
</ul>
<ul>
<li v-for="(value, name) in obj" :key="name">
屬性名:{{name}} 屬性值:{{value}}
</li>
</ul>

6.顯示、隱藏

★v-show

<div v-show="n%2===0"> n 是偶數</div>

★近似等于

<div :style="{display:n%2===0?'block':'none'}
"> n是偶數 </div>
其他指令?cn.vuejs.org

7.指令

★什么是指令

<div v-text="x"></div>
<div v-html="x"></div>
//以v-開頭的就是指令

★語法

v-指令名:參數=值,如v-on:click-prevent

8.修飾符

★有些指令支持修飾符

@click.stop=="add"//表示阻止事件傳播/冒泡
@click.prevent=="add"//表示阻止默認動作
@click.stop.prevent=="add"//同時表示兩種意思

★一共有多少修飾符呢

v-on支持的有.{keycode|keyAlias}.stop.prevent.capture.self.once.passive.native
快捷鍵相關:.ctrl.alt.shift.meta.exect
鼠標相關:.left.right.middle
v-bind支持的有:.prop.camel.sync
v-model支持的有:.lazy.number.trim

總結:

★Vue模板主要特點有

使用XML語法(不是HTML)
使用{{}}插入表達式
使用v-bind,v-on,v-html等指令操作DOM
使用v-if,v-for等指令實現條件判斷與循環

(1)入門屬性

  • el-掛載點

fed4fc1c4e461ae11f0e856cf8db00ed.png

可用$mount代替

d4003eabe3a270ec0b1ac124894fbd35.png
  • data-內部數據(支持對象和函數優先用函數)

main.js

對象的方式

e236f7e3b08795b7ce2965208298167d.png

函數的方式

7fccec7eaff2c0e8ebb6820d56256d88.png

瀏覽器

3087b3548b0ea358afd3d8170d8e99b6.png
  • methods-方法(事件處理函數或者普通函數)

main.js

165f7647cc542547f8206db51927ab5b.png

瀏覽器

c860edcbd42e4ac61d59a15078432c42.png
  • components-Vue組件(注意大小寫,組件內的data必須以函數的形式顯示)

main.js

b2b7c5e8f0c194bd1a28475b912411fb.png

demo.vue的內容

d9ffff6aecbdde9ab83614ce267047a3.png

瀏覽器渲染

63570a51d1322b24b91170c302f07120.png

或者

main.js

aff05c61622e5919924f3134ce608d5b.png

瀏覽器渲染

41b29821fe24b4467481c8bf8d6c586b.png
  • 四個鉤子(created,mounted,updated,destroyed)

★created-實例出現在內存中

★mounted-實例出現在頁面中

★updated-實例更新了

★destroyed-實例從頁面和內存中消亡了

main.js

7d62b85f35250bb7adbbf573093a5551.png

Demo.vue

7ab061e26bc9e320146b132a7be55230.png

瀏覽器渲染

25f37fa1f504d1d6b5d3ad5281749b49.png

1a292c1478dfd45031f6ffdfb4290a4e.png
  • props-外部數據屬性

main.js

message="n"(傳入字符串)

:message="n"(傳入this.n數據)

:fn("add")傳入this.add函數

6e31f890186cc710698a1bc34649d5e0.png

Demo.vue

3501887afe28e693fa3220a18181edea.png

瀏覽器渲染

9b111453f284cb82cfa6ae1d4308facf.png

!重要議題------數據響應式

深入響應式原理 — Vue.js?cn.vuejs.org
70633a4181abf3d28c78ab109d1b8a5c.png
Object.defineProperty()?developer.mozilla.org
e68304a092bcf44b6c9456db5d0f7bc5.png
  1. Object.defineProperty

★可以給屬性添加value

★可以給對象添加getter/setter

★getter和setter用于對屬性的讀寫和監控

2.代理(設計模式)

★對myData對象的屬性進行讀寫,全權由另一個vm負責

★vm就是myData的代理(類比房東租房)

★比如myData.n不用非要用vm.n來操作myData.n

3.vm=new Vue({data:myData})

★會讓vm成為myData的代理(proxy)

★會對myData的所有屬性進行監控

a0c924635a101ca890200d1c94236684.png

當data不存在object.b時的解決方法:

★把key聲明好

★使用Vue.set或者this.$set

4e2b7072b3acebe77a12591216bdaecf.png

data中有數組怎么辦?

變更方法?cn.vuejs.org

69bff07221421f43960d4585ffde1f63.png

(2)進階屬性

  • computed-計算屬性(會根據依賴是否變化來緩存)

★如果依賴的屬性沒有變化就不會重新計算

★getter/setter默認不會做緩存,Vue做了特殊處理

4382a8af3ec878b359049d75ce5d8876.png

127cbde7de8fdd031695b89b2cdc0d8a.png

列表展示:

ddfdab5b4fa15d828fe91df5bfb4d69f.png

a8cf5c35645a4b07b321f836ab4cc8d3.png
  • watch-偵聽屬性(當數據變化時執行一個函數)

9a9d9a3bc823724e186f5344be7e8023.png

9d2ee49a51ac74abfc8c38858799601a.png
watch?cn.vuejs.org

deep:true是干什么的?

★object.a變了如果讓object也變了,設置deep:true

★object.a變了如果讓object沒有變,設置deep:false

★deep的意思是監聽object的時候是否往深了看

  • directive-自定義指令屬性
自定義指令函數?cn.vuejs.org

af9522c2ff59503ced682a5a4e4ed0b6.png

a470a54a07e1e401b33e81606298b2b7.png

聲明一個局部指令

511ba137ade7cb347cbbccdc5c8b9fb4.png

62cc22c24414783c279000ba9abddffc.png

聲明一個全局指令

b5b4394764529dc146527b98eb99d6b8.png

4550ca089f0d84154c7e75a477f02763.png
  • mixins-混入屬性(混入就是復制)

示例:

main.js

5ee61c97b9e31e930233945dec4d1e18.png

app.vue

8f99c1b0f831f48dad7078945ac8f713.png

81369ca6ec373151964ca8f01d9cadf8.png

components/Child1.vue

bb3a9fdb73c974665c6dd2fa74e2c656.png

mixins/log.js

913fc1567a5638219b1b92383693a135.png

瀏覽器渲染:

bb16ba304b46ae8f9ac36a3cdd96b108.png

d9548026b44d9bb7f1affb40a70d754a.png
選項智能合并等更多mixins描述?cn.vuejs.org
  • extends-繼承屬性

d0297a02981a9a2d8f4d80e00d4a9a90.png

02dc290b1f181eae069752fd2942537d.png

MyVue.js

e8177d806a47c8b388105967f7293751.png

/

12ef7f7b198e01f17f20a479565259a3.png

Child1.vue

bc3254720843d585851752c399530714.png
  • provide和inject-提供和注入

main.js

b334ce0363fec2cdf8870fa7dd4ca4e9.png

App.vue

27a7ea31baa2304e2906c96d07692801.png

283559e7d38d8a8d2d0ad4bf938217d9.png

1b6a18a737bf480561391249ee725e85.png
<style>
.app {font-family: "Avenir", Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
.app.theme-blue button {background: blue;color: white;
}
.app.theme-blue {color: darkblue;
}.app.theme-red button {background: red;color: white;
}
.app.theme-red {color: darkred;
}
.app.fontSize-normal {font-size: 16px;
}
.app button {font-size: inherit;
}
.app.fontSize-small {font-size: 12px;
}
.app.fontSize-big {font-size: 20px;
}
</style>

Child1.vue/Child2.vue...

b90ff01382064b5a16f27b29ec983bc8.png

ChangeThemeButton.vue

0594f99f2a86b1f7b85af7a522a5accd.png

瀏覽器渲染

20be9f42c67f7af7b114ee050ee19188.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532051.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532051.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532051.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python布局管理_Python基礎=== Tkinter Grid布局管理器詳解

本文轉自&#xff1a;https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html 箬笠蓑衣Grid(網格)布局管理器會將控件放置到一個二維的表格里。主控件被分割成一系列的行和列&#xff0c;表格中的每個單元(cell)都可以放置一個控件。注意&#xff1a;不要試圖在一個主…

python面向對象類_python面向對象-類和對象

一. 類的定義class類名():代碼#定義類classWasher():defwash(self):print("洗衣服")注意&#xff1a;類名要滿足標識符命名規則&#xff0c;同時遵循大駝峰命名習慣。二. 創建對象對象名 類名()#創建對象w Washer()#調用方法w.wash() #洗衣服三. selfself指的是調用…

vant部署_vant ui rem配置流程

參考地址 https://www.cnblogs.com/WQLong/p/7798822.html1.下載lib-flexible使用的是vue-cliwebpack&#xff0c;通過npm來安裝的npm i lib-flexible --save2.引入lib-flexible在main.js中引入lib-flexibleimport ‘lib-flexible/flexible‘3.設置meta標簽通過meta標簽&#…

terminal services 找不到_電腦局域網中查看不到其他計算機或無法連接的解決辦法...

在辦公環境中&#xff0c;電腦經常需要打開網絡&#xff0c;進行一些文件共享的操作&#xff0c;但是有時會出現很多無法共享的情況&#xff0c;之前有一篇文章講過解決辦法&#xff0c;今天再來將一下具體無法共享的錯誤提示和相對應的處理方法&#xff0c;主要有以下幾種情況…

如何避免mysql回表查詢_mysql如何避免回表查詢

《迅猛定位低效SQL&#xff1f;》留了一個尾巴&#xff1a;select id,name where name‘shenjian‘select id,name,sexwhere name‘shenjian‘多查詢了一個屬性&#xff0c;為何檢索過程完全不同&#xff1f;什么是回表查詢&#xff1f;什么是索引覆蓋&#xff1f;如何實現索引…

python爬蟲開發數據庫設計入門經典_Python3實現的爬蟲爬取數據并存入mysql數據庫操作示例...

本文實例講述了Python3實現的爬蟲爬取數據并存入mysql數據庫操作。分享給大家供大家參考&#xff0c;具體如下&#xff1a;爬一個電腦客戶端的訂單。羅總推薦&#xff0c;抓包工具用的是HttpAnalyzerStdV7&#xff0c;與chrome自帶的F12類似。客戶端有接單大廳&#xff0c;羅列…

python中multiply函數_python中numpy庫內multiply()、dot()和 * 三種乘法運算的區別小計...

首先&#xff0c;導入函數包&#xff1a;import numpy as np1.np.multiply()函數:數組&#xff1a;(點對點)對應位置元素相乘矩陣&#xff1a;對應位置元素相乘示例&#xff1a;A np.array([[1,2],[3,4]])B np.array([[1,3],[2,4]])A_mat np.mat(A)B_mat np.mat(B)A_B_mult…

安裝python3.6.1_如何安裝python3.6.1/

如何在win7下安裝Python及配置1、首先&#xff0c;從搜索python官載適合自己電腦python版本。2標右擊桌面“計算機”擇打開菜單欄中的性”。3、WindowsXP時&#xff0c;在新彈出的屬性窗口&#xff0c;選擇“高級”->“環境變量”。Windows7是&#xff0c;在新彈出的屬性窗口…

編程入門python java和c語言_學習編程適不適合從Python入門?哪種語言更適合入門?...

本文對比了C語言和Python語言&#xff0c;分析它們作為編程入門語言各自的利弊&#xff0c;并給出了我推薦的編程學習道路。我本身已經入門了Python腳本語言&#xff0c;在進階C語言和JAVA語言后&#xff0c;Python重學就輕松很多&#xff0c;幾個小時就拾起了忘記的語法&#…

mysql 備份 一張表_mysql 備份表的一個方法

#--- start# 新建表create table sp2_match_comment_tmp like sp2_match_comment; # 這種方式 外鍵索引&#xff0c;觸發器不會在新表中有&#xff0c;要自己添加LOCK TABLES sp2_match_comment write, sp2_match_comment AS smc2 read, sp2_match_comment_tmp write;# 導出最新…

springmvc的工作原理_SpringMVC工作原理

1 簡介SpringMVC框架是以請求為驅動&#xff0c;圍繞Servlet設計&#xff0c;將請求發給控制器&#xff0c;然后通過模型對象&#xff0c;分派器來展示請求結果視圖。其中核心類是DispatcherServlet&#xff0c;它是一個Servlet&#xff0c;頂層是實現的Servlet接口。2 運行原理…

java邏輯運算符_Java邏輯運算符

Java邏輯運算符Java邏輯運算符包含下面6中符號&#xff1a;&& 與 &#xff1b;&& 與 前后兩個操作數必須都是true才返回true,否則返回false& 不短路與 &#xff1b; & 不短路與 表達式都會執行到|| 或&#xff1b; || 或 只要兩個操作數中有一個是tru…

跨站點請求偽造_十大常見web漏洞——跨站點請求偽造(CSRF)

CSRF介紹什么是CSRF呢&#xff1f;我們直接看例子。https://mp.toutiao.com/profile_v3/graphic/preview?dodelete&pgc_id6829574701128352260這個URL是頭條刪除pgc_id為6829574701128352260的一篇文章的連接&#xff0c;通過執行這個URL用戶就可以刪除這篇文章。首先攻擊…

java多線程隊列_java多線程消費者生產者模式(BlockingQueue 通過阻塞隊列實現)

import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;/*** Created with IntelliJ IDEA.* User: csx* Date: 4/24/14* Time: 9:56 AM* To change this template use File | Settings | File Templates.** 生產者與消費者模型中&#x…

unique函數_C++核心準則C.35:基類的析構函數必須滿足的條件

C.35: A base class destructor should be either public and virtual, or protected and nonvirtual基類的析構函數要么是公開的虛函數&#xff0c;要么是保護的非虛函數Reason(原因)To prevent undefined behavior. If the destructor is public, then calling code can atte…

java jta 例子_Java事務處理全解析(八)——分布式事務入門例子(Spring+JTA+Atomikos+Hibernate+JMS)...

在本系列先前的文章中&#xff0c;我們主要講解了JDBC對本地事務的處理&#xff0c;本篇文章將講到一個分布式事務的例子。請通過以下方式下載github源代碼&#xff1a;本地事務和分布式事務的區別在于&#xff1a;本地事務只用于處理單一數據源事務(比如單個數據庫)&#xff0…

python連接redis哨兵_Python redis.sentinel方法代碼示例

本文整理匯總了Python中redis.sentinel方法的典型用法代碼示例。如果您正苦于以下問題&#xff1a;Python redis.sentinel方法的具體用法&#xff1f;Python redis.sentinel怎么用&#xff1f;Python redis.sentinel使用的例子&#xff1f;那么恭喜您, 這里精選的方法代碼示例或…

交換兩個數組 差最小 java_如何交換兩個等長整形數組使其數組和的差最小(C和java實現)...

1 importjava.util.Arrays;23 /**4 *5 *authorAdministrator6 *7 */8 public classTestUtil {9 private int[] arrysMin null;1011 private int[] arrysMax null;1213 private int matchNum 0;1415 private boolean hasMatched false;1617 /**18 * 返回數組的所有元素的總和…

python 判斷子序列_Leetcode練習(Python):第392題:判斷子序列:給定字符串 s 和 t ,判斷 s 是否為 t 的子序列。...

題目&#xff1a;判斷子序列&#xff1a;給定字符串 s 和 t &#xff0c;判斷 s 是否為 t 的子序列。你可以認為 s 和 t 中僅包含英文小寫字母。字符串 t 可能會很長(長度 ~ 500,000)&#xff0c;而 s 是個短字符串(長度 <100)。字符串的一個子序列是原始字符串刪除一些(也可…

垂直串聯六關節機器人調試手冊_工業機器人有哪些應用你知道嗎?

目前&#xff0c;工業機器人大部分集中于傳統的焊接、噴涂等領域&#xff0c;我國工業機器人的核心部件和整機市場仍被國外壟斷&#xff0c;工業機器人要面向整個智能制造市場&#xff0c;還需要具備應對整個智能制造過程中大多數工藝的能力&#xff0c;而工業互聯網則是實現智…