国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

詳解vue 實例方法和數據

來源:懂視網 責編:小采 時間:2020-11-27 22:27:21
文檔

詳解vue 實例方法和數據

詳解vue 實例方法和數據:1.vm.$set 問題描述: 如何在不通過循環數據給list數據添加一個showMore屬性,并且在moreFun中改變這個新增屬性的值,并實現雙向綁定? <template> <div id=app> <div class=demo> <ul> &
推薦度:
導讀詳解vue 實例方法和數據:1.vm.$set 問題描述: 如何在不通過循環數據給list數據添加一個showMore屬性,并且在moreFun中改變這個新增屬性的值,并實現雙向綁定? <template> <div id=app> <div class=demo> <ul> &

1.vm.$set

問題描述:

如何在不通過循環數據給list數據添加一個showMore屬性,并且在moreFun中改變這個新增屬性的值,并實現雙向綁定?

<template>
 <div id="app">
 <div class="demo">
 <ul>
 <template v-for="(v,index) in list">
 <li>{{v.name}}</li>
 <div v-show="!v.showMore">
 <button @click="moreFun(index)">展示更多</button>
 </div>
 </template>
 </ul>
 </div>
 </div>
</template>
<script>
export default {
 name: 'app',
 data() {
 return {
 list: [{
 name: '小穎'
 }, {
 name: '仔仔'
 }, {
 name: '黑妞'
 }, {
 name: '土豆'
 }]
 }
 },
 methods: {
 moreFun(index) {
 console.log(this.list);
 }
 }
}
</script>
<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;
}
</style>

一開始小穎并不知道怎么做,而且小穎覺得               

 <div v-show="!v.showMore">
 <button @click="moreFun(index)">展示更多</button>
 </div>

這段代碼肯定會報錯,然而當小穎寫上后發現,并沒有,后來那位帥鍋告訴我,看看vue的  vm.$set     小穎看后將moreFun方法寫為:

 moreFun(index) {
 this.$set(this.list[index], 'showMore', true);
 console.log(this.list);
 }

然后就達到小穎想要的結果啦。小穎當時遇到的問題類似于這樣的:

<template>
 <div id="app">
 <div class="demo">
 <ul>
 <template v-for="(v,index) in list">
 <li>{{v.name}}</li>
 <div v-show="!v.showMore">
 <button @click="moreFun(index)">展示更多</button>
 </div>
 </template>
 </ul>
 </div>
 </div>
</template>
<script>
export default {
 name: 'app',
 data() {
 return {
 list: [{
 name: '小穎'
 }, {
 name: '仔仔'
 }, {
 name: '黑妞'
 }, {
 name: '土豆'
 }]
 }
 },
 mounted: function() {
 this.list.forEach(function(element, index) {
 element.showMore = false;
 });
 },
 methods: {
 moreFun(index) {
 this.list[index].showMore = true;
 console.log(this.list);
 }
 }
}
</script>
<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;
}
</style>

問題:當執行完moreFun方法后,雖然list中的showMore屬性的值變成了true,但是

<div v-show="!v.showMore"> <button @click="moreFun(index)">展示更多</button> </div>

按鈕 展示更多  仍然顯示著,這是因為,如果在實例創建之后添加新的屬性到實例上,它不會觸發視圖更新。

所以后來小穎就將showMore直接添加到list中,然后就好啦。現在想想其實用個vm.$set就解決啦。

2.vm.$watch

用法:

觀察 Vue 實例變化的一個表達式或計算屬性函數。回調函數得到的參數為新值和舊值。表達式只接受監督的鍵路徑。對于更復雜的表達式,用一個函數取代。

注意:在變異 (不是替換) 對象或數組時,舊值將與新值相同,因為它們的引用指向同一個對象/數組。Vue 不會保留變異之前值的副本。

<template>
 <div id="app">
 <div class="demo">
 <input type="text" class="num1" v-model="num1">
 <label class="sign">-</label>
 <input type="text" class="num2" v-model="num2">
 <label class="sign">=</label>
 <label class="result">{{resultNum}}</label>
 </div>
 </div>
</template>
<script>
export default {
 name: 'app',
 data() {
 return {
 num1: 1,
 num2: 5,
 resultNum: null
 }
 },
 watch: {
 num1: function() {
 var _num1 = parseInt(this.num1);
 var _num2 = parseInt(this.num2);
 this.resultNum = _num1 - _num2;
 },
 num2: function() {
 var _num1 = parseInt(this.num1);
 var _num2 = parseInt(this.num2);
 this.resultNum = _num1 - _num2;
 }
 },
 mounted: function() {
 var _num1 = parseInt(this.num1);
 var _num2 = parseInt(this.num2);
 this.resultNum = _num1 - _num2;
 }
}
</script>
<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;
}
input.num1,
input.num2 {
 width: 100px;
}
label.sign {
 font-size: 30px;
 vertical-align: -3px;
}
label.result {
 font-size: 20px;
}
</style>

3.vm.$delete

 用法:

這是全局 Vue.delete 的別名。

<template>
 <div id="app">
 <div class="demo">
 <ul>
 <template v-for="(v,index) in list">
 <li>{{v.name}}</li>
 <li>{{v.age}}</li>
 <button @click="deleteFun(index)">delete</button>
 </template>
 </ul>
 </div>
 </div>
</template>
<script>
export default {
 name: 'app',
 data() {
 return {
 list: [{
 name: '小穎',
 age:22
 }, {
 name: '仔仔',
 age:1
 }, {
 name: '黑妞',
 age:1
 }, {
 name: '土豆',
 age:1
 }]
 }
 },
 methods: {
 deleteFun(index) {
 this.$delete(this.list[index], 'age');
 }
 }
}
</script>
<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;
}
</style>

總結

以上所述是小編給大家介紹的vue 實例方法和數據,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

詳解vue 實例方法和數據

詳解vue 實例方法和數據:1.vm.$set 問題描述: 如何在不通過循環數據給list數據添加一個showMore屬性,并且在moreFun中改變這個新增屬性的值,并實現雙向綁定? <template> <div id=app> <div class=demo> <ul> &
推薦度:
標簽: 方法 數據 VUE
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 久久亚洲精品国产精品婷婷 | 一级成人毛片免费观看 | 成人精品视频在线观看完整版 | 欧美中文日韩 | 亚洲欧美日韩国产综合 | 亚洲 欧美综合小说区图片区 | 亚洲成人一区二区 | 亚洲人成一区 | 欧美日韩亚洲综合另类ac | 韩国精品一区 | 久久久久久亚洲精品不卡 | 欧美日韩中字 | 免费看一级黄色毛片 | 欧美伊香蕉久久综合类网站 | 黄网站色视频免费观看 | 欧美日韩黄色大片 | 国产成人h福利小视频在线观看 | 国产精品免费观看视频播放 | 国产精品视频久久久 | 欧美精品色精品一区二区三区 | 99久久精品国产一区二区成人 | 国产成人乱码一区二区三区 | 精品一区二区三区在线观看 | 日韩精品一区二区三区国语自制 | 青青国产成人久久91网 | 久久精品国产亚洲精品2020 | 欧美精品一区二区三区久久 | 国产在线视频在线观看 | 亚洲精品乱码久久久久久中文字幕 | 国内一级片| 伊人毛片 | 亚洲欧美日韩综合在线 | 国产日产欧美精品一区二区三区 | 亚洲欧美v| 91久久精品国产亚洲 | 欧美福利在线视频 | 国精品日韩欧美一区二区三区 | 亚洲欧美日韩在线2020 | 最新国产小视频在线播放 | 影音先锋女人aa鲁色资源 | 亚洲欧美精品成人久久91 |