在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ VUE監(jiān)聽數(shù)組新舊值不變化,請教前輩原因?

VUE監(jiān)聽數(shù)組新舊值不變化,請教前輩原因?

最近在自學(xué)vue對于watch監(jiān)測這塊還有點疑問,請教前輩幫忙解答。

具體問題如下:
測試監(jiān)測不同類型data數(shù)據(jù)的新舊值,在有數(shù)組的情況下,watch監(jiān)測到了數(shù)組的變化但是沒監(jiān)測到變化前的舊值。
在官網(wǎng)也查了文檔,問題應(yīng)該是出在下面這里,無奈對于官網(wǎng)文檔給出的解決方法看不懂,求各位大神給與指點?。?!

                g: {
                    handler: function (val, oldVal) {
                        console.log("newG:" + val, 'oldG:' + oldVal);
                    }
                }

當(dāng)你利用索引直接設(shè)置一個項時,例如:vm.items[indexOfItem] = newValue
當(dāng)你修改數(shù)組的長度時,例如:vm.items.length = newLength

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>watch</title>
    <script src="https://cdn.jsdelivr.net/npm/vue "></script>
</head>

<body>
    <fieldset>
        <legend>實例1</legend>
        <div id="app">
            <span>A:</span>
            <input type="text" v-model:value="a" />
            <span>B:</span>
            <input type="text" v-model:value="b" />
            <div>
                <span>Cname:</span>
                <input type="text" v-model:value="c.name">
            </div>
            <div>
                <span>Dname:</span>
                <input type="text" v-model:value="d.e.f.age">
            </div>
            <div>
                <span>arry:</span>
                <input type="text" v-model:value="g[0]">
            </div>
        </div>
    </fieldset>
    <script> 
        new Vue({
            el: '#app',
            data: {
                a: '',
                b: '',
                c: {
                    name: ''
                },
                d: {
                    e: {
                        f: {
                            nage: ''
                        }
                    }
                },
                g: []
            },
            watch: {
                //普通watch監(jiān)聽
                a: function (val, oldVal) {
                    console.log("newA:" + val, 'oldA:' + oldVal);
                },
                //通過方法名在methods內(nèi)監(jiān)聽
                b: 'anothermethod',
                //對象深度監(jiān)聽
                c: {
                    handler: function (val, oldVal) {
                        console.log('newname:' + val, 'oldname:' + oldVal);
                    },
                    deep: true,
                    immediate: true
                },
                'c.name': {
                    handler: function (val, oldVal) {
                        console.log('newC:' + val, 'oldC:' + oldVal);
                    }
                },
                'd.e.f.age': {
                    handler: function (val, oldVal) {
                        console.log('newD:' + val, 'oldD:' + oldVal);
                    }
                },
                g: {
                    handler: function (val, oldVal) {
                        console.log("newG:" + val, 'oldG:' + oldVal);
                    }
                }
            },
            methods: {
                anothermethod: function (val, oldVal) {
                    console.log("newB:" + val, 'oldB:' + oldVal);
                }
            }
        })


    </script>
</body>

</html>
回答
編輯回答
落殤

知道怎么用但是說不出來o(╯□╰)o

數(shù)組本身有值: oldArr = [1,2,3],渲染到html上顯示1,2,3;
現(xiàn)在需求來了,要改一下數(shù)組的值,變成newArr = [1,3,5],并讓html渲染成1,3,5;
怎么辦?
1. 替換數(shù)組;
2. 變異方法;
你都不想用,就要通過index改變數(shù)組的值,讓html顯示1,3,5.然后就出現(xiàn)了你看到的那個問題。
通過改index什么的,怎么解決?
1. Vue.set(vm.items, indexOfItem, newValue);
2. vm.items.splice(indexOfItem, 1, newValue);
大概就是這么個意思
2018年8月15日 16:21
編輯回答
硬扛
            g: {
                handler: function (val, oldVal) {
                    console.log("newG:" + val, 'oldG:' + oldVal);
                },
                deep:true//加上這個
            }
2017年6月1日 02:09
編輯回答
忠妾
   'g.0': {// g -> g.0
                    handler: function (val, oldVal) {
                        console.log("newG:" + val, 'oldG:' + oldVal);
                    }
                }
2018年5月15日 16:38