欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue動態(tài)添加屬性到data的實現(xiàn)

 更新時間:2022年08月05日 11:21:07   作者:飯啊飯°  
在vue中請求接口中,一個請求方法可能對應(yīng)后臺兩個請求接口,所以請求參數(shù)就會有所不同。需要我們先設(shè)置共同的參數(shù),然后根據(jù)條件動態(tài)添加參數(shù)屬性

一、場景例子

<body>
    <div id="app">
        <p v-for="(value,key) in item" :key="key">
            {{value}}
        </p>
        <button @click="addProperty">動態(tài)添加新屬性</button>
    </div>
</body>
</html>
<script>
    new Vue({
        el:'#app',
        data:{
            item:{
                oldProperty:"舊屬性"
            }
        },
        methods: {
            addProperty(){
                this.item.newProperty = "新屬性";
                console.log(this.item);
            }
        },
    })
</script>

效果:點擊按鈕后,輸出的結(jié)果中有新添加的新屬性,但是頁面沒有顯示新屬性。

二、原理分析

vue2使用Object.defineProperty實現(xiàn)數(shù)據(jù)響應(yīng)式;

const obj = {}
Object.defineProperty(obj, 'foo', {
        get() {
            console.log(`get foo:${val}`);
            return val
        },
        set(newVal) {
            if (newVal !== val) {
                console.log(`set foo:${newVal}`);
                val = newVal
            }
        }
    })
}
  • 當(dāng)訪問foo屬性,或者設(shè)置foo值的時候都能觸發(fā)setter與getter;
  • 但是為obj添加新屬性的時候,卻無法觸發(fā)事件屬性的攔截
bj.bar = '新屬性'

原因是一開始o(jì)bj的foo屬性被設(shè)成了響應(yīng)式數(shù)據(jù),而bar是后面新增的屬性,并沒有通過Object.defineProperty設(shè)置成響應(yīng)式數(shù)據(jù)

三、解決方案

有三種解決方案:

  • Vue.set()
  • Object.assign()
  • $forcecUpdated()

常用的就是Vue.set(),語法為:Vue.set( target, propertyName/index, value )

<script>
    new Vue({
        el:'#app',
        data:{
            item:{
                oldProperty:"舊屬性"
            }
        },
        methods: {
            addProperty(){
                Vue.set(this.item,"newProperty","新屬性")
                console.log(this.item);
            }
        },
    })
</script>

到此這篇關(guān)于Vue動態(tài)添加屬性到data的實現(xiàn)的文章就介紹到這了,更多相關(guān)Vue動態(tài)添加屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue實現(xiàn)簡易計算器

    Vue實現(xiàn)簡易計算器

    這篇文章主要為大家詳細(xì)介紹了用Vue制作的簡易計算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 在 Vue.js中優(yōu)雅地使用全局事件的方法

    在 Vue.js中優(yōu)雅地使用全局事件的方法

    這篇文章主要介紹了在 Vue.js中優(yōu)雅地使用全局事件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 詳解vue結(jié)合el-table實現(xiàn)表格小計總計需求(summary-method)

    詳解vue結(jié)合el-table實現(xiàn)表格小計總計需求(summary-method)

    這篇文章主要介紹了vue結(jié)合el-table實現(xiàn)表格小計總計需求(summary-method),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • vue項目安裝使用vconsole方式

    vue項目安裝使用vconsole方式

    這篇文章主要介紹了vue項目安裝使用vconsole方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • el-form-item?prop屬性動態(tài)綁定不生效問題及解決

    el-form-item?prop屬性動態(tài)綁定不生效問題及解決

    這篇文章主要介紹了el-form-item?prop屬性動態(tài)綁定不生效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 使用Vant完成Dialog彈框案例

    使用Vant完成Dialog彈框案例

    這篇文章主要介紹了使用Vant完成Dialog彈框案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 詳解vue-cli 構(gòu)建Vue項目遇到的坑

    詳解vue-cli 構(gòu)建Vue項目遇到的坑

    本篇文章主要介紹了詳解vue-cli 構(gòu)建Vue項目遇到的坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • vue項目引入antDesignUI組件實現(xiàn)

    vue項目引入antDesignUI組件實現(xiàn)

    本文介紹了如何以Vue引入antDesignUI,主要包括下載安裝、配置和引入組件等步驟,通過本文,讀者可以快速了解antDesignUI在Vue中的應(yīng)用,感興趣的可以了解一下
    2023-08-08
  • 基于Vue2x實現(xiàn)響應(yīng)式自適應(yīng)輪播組件插件VueSliderShow功能

    基于Vue2x實現(xiàn)響應(yīng)式自適應(yīng)輪播組件插件VueSliderShow功能

    本文講述的是從開發(fā)一款基于Vue2x的響應(yīng)式自適應(yīng)輪播組件插件的一個全過程,包含發(fā)布到npm,構(gòu)建自己的npm包,供下載安裝使用的技巧,非常不錯,具有一定的參考借鑒價值,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-05-05
  • Vue 短信驗證碼組件開發(fā)詳解

    Vue 短信驗證碼組件開發(fā)詳解

    Vue.js(讀音 /vju&#720;/, 類似于 view)是一個構(gòu)建數(shù)據(jù)驅(qū)動的 web 界面的庫。這篇文章主要介紹了Vue 短信驗證碼組件開發(fā)詳解,需要的朋友可以參考下
    2017-02-02

最新評論