久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解Vue.js 響應(yīng)接口

瀏覽:58日期:2023-01-09 13:08:01

Vue 可以添加數(shù)據(jù)動(dòng)態(tài)響應(yīng)接口。

例如以下實(shí)例,我們通過(guò)使用 $watch 屬性來(lái)實(shí)現(xiàn)數(shù)據(jù)的監(jiān)聽(tīng),$watch 必須添加在 Vue 實(shí)例之外才能實(shí)現(xiàn)正確的響應(yīng)。

實(shí)例中通過(guò)點(diǎn)擊按鈕計(jì)數(shù)器會(huì)加 1。setTimeout 設(shè)置 10 秒后計(jì)算器的值加上 20 。

<div id = 'app'> <p style = 'font-size:25px;'>計(jì)數(shù)器: {{ counter }}</p> <button @click = 'counter++' style = 'font-size:25px;'>點(diǎn)我</button></div><script type = 'text/javascript'>var vm = new Vue({ el: ’#app’, data: { counter: 1 }});vm.$watch(’counter’, function(nval, oval) { alert(’計(jì)數(shù)器值的變化 :’ + oval + ’ 變?yōu)?’ + nval + ’!’);});setTimeout( function(){ vm.counter += 20; },10000);</script>

效果如下:

詳解Vue.js 響應(yīng)接口

Vue 不允許在已經(jīng)創(chuàng)建的實(shí)例上動(dòng)態(tài)添加新的根級(jí)響應(yīng)式屬性。

Vue 不能檢測(cè)到對(duì)象屬性的添加或刪除,最好的方式就是在初始化實(shí)例前聲明根級(jí)響應(yīng)式屬性,哪怕只是一個(gè)空值。

如果我們需要在運(yùn)行過(guò)程中實(shí)現(xiàn)屬性的添加或刪除,則可以使用全局 Vue,Vue.set 和 Vue.delete 方法。

Vue.set

Vue.set 方法用于設(shè)置對(duì)象的屬性,它可以解決 Vue 無(wú)法檢測(cè)添加屬性的限制,語(yǔ)法格式如下:

Vue.set( target, key, value )

參數(shù)說(shuō)明:

target: 可以是對(duì)象或數(shù)組 key : 可以是字符串或數(shù)字 value: 可以是任何類型

<div id = 'app'> <p style = 'font-size:25px;'>計(jì)數(shù)器: {{ products.id }}</p> <button @click = 'products.id++' style = 'font-size:25px;'>點(diǎn)我</button></div><script type = 'text/javascript'>var myproduct = {'id':1, name:'book', 'price':'20.00'};var vm = new Vue({ el: ’#app’, data: { products: myproduct }});vm.products.qty = '1';console.log(vm);vm.$watch(’products.id’, function(nval, oval) { alert(’計(jì)數(shù)器值的變化 :’ + oval + ’ 變?yōu)?’ + nval + ’!’);});</script>

在以上實(shí)例中,使用以下代碼在開(kāi)始時(shí)創(chuàng)建了一個(gè)變量 myproduct:

var myproduct = {'id':1, name:'book', 'price':'20.00'};

該變量在賦值給了 Vue 實(shí)例的 data 對(duì)象:

var vm = new Vue({ el: ’#app’, data: { products: myproduct } });

如果我們想給 myproduct 數(shù)組添加一個(gè)或多個(gè)屬性,我們可以在 Vue 實(shí)例創(chuàng)建后使用以下代碼:

vm.products.qty = '1';

查看控制臺(tái)輸出:

詳解Vue.js 響應(yīng)接口

如上圖看到的,在產(chǎn)品中添加了數(shù)量屬性 qty,但是 get/set 方法只可用于 id,name 和 price 屬性,卻不能在 qty 屬性中使用。

我們不能通過(guò)添加 Vue 對(duì)象來(lái)實(shí)現(xiàn)響應(yīng)。 Vue 主要在開(kāi)始時(shí)創(chuàng)建所有屬性。 如果我們要實(shí)現(xiàn)這個(gè)功能,可以通過(guò) Vue.set 來(lái)實(shí)現(xiàn):

<div id = 'app'><p style = 'font-size:25px;'>計(jì)數(shù)器: {{ products.id }}</p><button @click = 'products.id++' style = 'font-size:25px;'>點(diǎn)我</button></div><script type = 'text/javascript'>var myproduct = {'id':1, name:'book', 'price':'20.00'};var vm = new Vue({ el: ’#app’, data: { products: myproduct }});Vue.set(myproduct, ’qty’, 1);console.log(vm);vm.$watch(’products.id’, function(nval, oval) { alert(’計(jì)數(shù)器值的變化 :’ + oval + ’ 變?yōu)?’ + nval + ’!’);});</script>

詳解Vue.js 響應(yīng)接口

從控制臺(tái)輸出的結(jié)果可以看出 get/set 方法可用于qty 屬性。

Vue.delete

Vue.delete 用于刪除動(dòng)態(tài)添加的屬性 語(yǔ)法格式:

Vue.delete( target, key )

參數(shù)說(shuō)明:

target: 可以是對(duì)象或數(shù)組 key : 可以是字符串或數(shù)字

<div id = 'app'> <p style = 'font-size:25px;'>計(jì)數(shù)器: {{ products.id }}</p> <button @click = 'products.id++' style = 'font-size:25px;'>點(diǎn)我</button></div><script type = 'text/javascript'>var myproduct = {'id':1, name:'book', 'price':'20.00'};var vm = new Vue({ el: ’#app’, data: { products: myproduct }});Vue.delete(myproduct, ’price’);console.log(vm);vm.$watch(’products.id’, function(nval, oval) { alert(’計(jì)數(shù)器值的變化 :’ + oval + ’ 變?yōu)?’ + nval + ’!’);});</script>

以上實(shí)例中我們使用 Vue.delete 來(lái)刪除 price 屬性。以下是控制臺(tái)輸出結(jié)果:

詳解Vue.js 響應(yīng)接口

從上圖輸出結(jié)果中,我們可以看到 price 屬性已刪除,只剩下了 id 和 name 屬性,price 屬性的 get/set 方法也已刪除。

以上就是詳解Vue.js 響應(yīng)接口的詳細(xì)內(nèi)容,更多關(guān)于Vue.js 響應(yīng)接口的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 曲周县| 调兵山市| 建德市| 新沂市| 建平县| 塔城市| 万全县| 长岭县| 温州市| 牟定县| 双桥区| 大田县| 石林| 师宗县| 高要市| 额济纳旗| 叙永县| 武城县| 石河子市| 瑞安市| 蕉岭县| 江川县| 叙永县| 独山县| 房产| 多伦县| 佳木斯市| 桐梓县| 佛教| 武安市| 甘德县| 海淀区| 米脂县| 景宁| 冀州市| 河东区| 山阳县| 荆门市| 三门县| 山西省| 民县|