<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1.v-for用來回圈的陣列怎麼發生變化可以被vue檢測到:
push、pop、shift、unshift、splice、sort、reverse等方法可以被檢測到
vue對於這些方法的處理是重寫了這些方法,並在最後會觸發一次notify方法來通知這個array已經發生變化
vue還增加了兩個方法來觀測array的變化:
$set
:如果直接設定array中的元素,不會觸發檢視的變化this.selectArray[1] = 'newValue' // 不會觸發檢視變化 this.selectArray.$set(1, 'newValue') // 會觸發檢視變化
$remove
:是splice的語法糖,用來從目標元素中查詢並且刪除這個元素let itemIndex = this.selectArray.indexOf(selectItem) this.selectArray.splice(itemIndex,1) // 刪除這個元素 this.selectArray.$remove(selectItem) // 同樣效果,不用查詢index
vue不能檢測到下面陣列的變化:
使用索引設定元素:
this.selectArray[1] = 'newValue'
解決辦法:使用$set方法
修改資料的長度:
this.selectArray.length = 0
解決方法:使用空陣列來替換:this.selectArray = []
2.使用v-for遍歷物件
使用別名
<li v-for = "(key,value) in obj"> {{key}}-{{value}}</li>
不使用別名,使用$key
<li v-for = "value in obj"> {{$key}}-{{value}} </li>
注意:es5無法檢測到物件增加新屬性,所以vue提供了三個方法來監視物件屬性:
$add(key,value)
$set(key,value)
$delete(key)
Vue.directive('directiveName',{ // 這裡就是指令物件的內部 // 可以使用this來獲取有用的引數 bind: () => { // 準備工作:新增事件處理器等 dom.addEventListener........ }, update: (oldVal,newVal) => { // 值更新的時候的工作 // 初始化的時候也會被呼叫 }, unbind: () => { // 清理工作,比如接觸bind新增的事件處理器 } })
或
Vue.directive('directiveName',(value) => { // 代替update函數 }) // 使用指令 <div directiveName="argumentValue"></div>
在指令物件中,可以只用this來獲取一些有用的引數:
this.el
: 指令繫結的元素this.vm
:指令的上下文viewModelthis.expression
: 指令的表示式this.arg
:指令的引數this.name
: 指令的名字this.modifiers
:一個物件,指令的修飾符this.descriptor
: 一個物件,指令的解析結果動態指令引數
當引數是動態的時候。
main.js
//當引數的值是動態的時候 Vue.directive('color2', { bind: function(el, binding) { el.style.color = binding.value; } }) Vue.directive('color3', { bind: function(el, binding) { el.style.color = binding.arg; } })
template.vue中
<template> <div class="demo"> <!-- value --> <p v-color2='purpleUser'><i class="el-icon-user-solid"></i></p> <p v-color2='redUser'><i class="el-icon-user-solid"></i></p> <p v-color2='greenUser'><i class="el-icon-user-solid"></i></p> <!-- arg --> <p v-color3:[purpleUser]><i class="el-icon-user-solid"></i></p> <p v-color3:[redUser]><i class="el-icon-user-solid"></i></p> <p v-color3:[greenUser]><i class="el-icon-user-solid"></i></p> </div> </template> <script> export default { data() { return { purpleUser: 'purple', redUser: 'red', greenUser: 'green' } }, created() {}, methods: {} } </script> <style lange='scss' scoped> p { display: inline-block; font-size: 40px; } </style>
引數是靜態的,將key的值作為value,改變顏色
main.js
Vue.directive('color', { bind: function(el, binding) { const color = Object.keys(binding.modifiers)[0]; //將key的值作為value,改變顏色,Object.keys獲取key的值; el.style.color = color; } })
template.vue中
<template> <div class="demo"> <p v-color.purple><i class="el-icon-user-solid"></i></p> <p v-color.red><i class="el-icon-user-solid"></i></p> <p v-color.green><i class="el-icon-user-solid"></i></p> </div> </template> <script> export default { data() { return {} }, created() {}, methods: {} } </script> <style lange='scss' scoped> p { display: inline-block; font-size: 40px; } </style>
以上的方法,最終實現效果是一樣的。
好了,這些僅為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45