最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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
            }
        }
    })
}
  • 當訪問foo屬性,或者設(shè)置foo值的時候都能觸發(fā)setter與getter;
  • 但是為obj添加新屬性的時候,卻無法觸發(fā)事件屬性的攔截
bj.bar = '新屬性'

原因是一開始obj的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)文章

  • 巧妙運用v-model實現(xiàn)父子組件傳值的方法示例

    巧妙運用v-model實現(xiàn)父子組件傳值的方法示例

    這篇文章主要介紹了巧妙運用v-model實現(xiàn)父子組件傳值的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • Vue實現(xiàn)簡單的留言板

    Vue實現(xiàn)簡單的留言板

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)簡單的留言板,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 最新評論

    含山县| 商水县| 鄢陵县| 岑巩县| 元朗区| 汉沽区| 原平市| 平凉市| 天水市| 澄江县| 江油市| 枝江市| 吉林市| 基隆市| 白玉县| 泰顺县| 萝北县| 维西| 洪雅县| 赤壁市| 怀仁县| 贵阳市| 诸暨市| 山丹县| 长泰县| 水城县| 黑河市| 县级市| 廊坊市| 莱西市| 屏东市| 塔河县| 色达县| 新营市| 嘉善县| 安乡县| 蒲城县| 全椒县| 苏尼特右旗| 兴安盟| 舟山市|