詳解Vue.js 響應(yīng)接口
Vue 可以添加數(shù)據(jù)動(dòng)態(tài)響應(yīng)接口。
例如以下實(shí)例,我們通過使用 $watch 屬性來實(shí)現(xiàn)數(shù)據(jù)的監(jiān)聽,$watch 必須添加在 Vue 實(shí)例之外才能實(shí)現(xiàn)正確的響應(yīng)。
實(shí)例中通過點(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 不允許在已經(jīng)創(chuàng)建的實(shí)例上動(dòng)態(tài)添加新的根級(jí)響應(yīng)式屬性。
Vue 不能檢測(cè)到對(duì)象屬性的添加或刪除,最好的方式就是在初始化實(shí)例前聲明根級(jí)響應(yīng)式屬性,哪怕只是一個(gè)空值。
如果我們需要在運(yùn)行過程中實(shí)現(xiàn)屬性的添加或刪除,則可以使用全局 Vue,Vue.set 和 Vue.delete 方法。
Vue.set
Vue.set 方法用于設(shè)置對(duì)象的屬性,它可以解決 Vue 無法檢測(cè)添加屬性的限制,語法格式如下:
Vue.set( target, key, value )
參數(shù)說明:
- 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í)例中,使用以下代碼在開始時(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)輸出:

如上圖看到的,在產(chǎn)品中添加了數(shù)量屬性 qty,但是 get/set 方法只可用于 id,name 和 price 屬性,卻不能在 qty 屬性中使用。
我們不能通過添加 Vue 對(duì)象來實(shí)現(xiàn)響應(yīng)。 Vue 主要在開始時(shí)創(chuàng)建所有屬性。 如果我們要實(shí)現(xiàn)這個(gè)功能,可以通過 Vue.set 來實(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>

從控制臺(tái)輸出的結(jié)果可以看出 get/set 方法可用于qty 屬性。
Vue.delete
Vue.delete 用于刪除動(dòng)態(tài)添加的屬性 語法格式:
Vue.delete( target, key )
參數(shù)說明:
- 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 來刪除 price 屬性。以下是控制臺(tái)輸出結(jié)果:

從上圖輸出結(jié)果中,我們可以看到 price 屬性已刪除,只剩下了 id 和 name 屬性,price 屬性的 get/set 方法也已刪除。
以上就是詳解Vue.js 響應(yīng)接口的詳細(xì)內(nèi)容,更多關(guān)于Vue.js 響應(yīng)接口的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue項(xiàng)目如何獲取本地文件夾絕對(duì)路徑
這篇文章主要介紹了Vue項(xiàng)目如何獲取本地文件夾絕對(duì)路徑問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Vue指令v-for遍歷輸出JavaScript數(shù)組及json對(duì)象的常見方式小結(jié)
這篇文章主要介紹了Vue指令v-for遍歷輸出JavaScript數(shù)組及json對(duì)象的常見方式,結(jié)合實(shí)例形式總結(jié)分析了vue.js使用v-for指令遍歷輸出js數(shù)組與json對(duì)象的常見操作技巧,需要的朋友可以參考下2019-02-02
Vue 實(shí)現(xiàn)定時(shí)刷新與自動(dòng)更新(示例詳解)
在現(xiàn)代 Web 開發(fā)中,定時(shí)刷新頁面或定時(shí)更新數(shù)據(jù)是一種常見的需求,尤其是在需要與服務(wù)器進(jìn)行定時(shí)通信或者展示實(shí)時(shí)數(shù)據(jù)的場(chǎng)景下,Vue.js 提供了簡(jiǎn)單而有效的方法來實(shí)現(xiàn)定時(shí)刷新和自動(dòng)更新,本文將介紹幾種常見的定時(shí)刷新方式、適用場(chǎng)景、優(yōu)缺點(diǎn)以及性能考慮2024-11-11
Vue.js 3.x 中的響應(yīng)式數(shù)據(jù)ref 與 reactive詳解
ref 和 reactive 是 Vue.js 3 中用于創(chuàng)建響應(yīng)式數(shù)據(jù)的兩個(gè)關(guān)鍵函數(shù),它們分別適用于不同類型的數(shù)據(jù),幫助我們更好地組織和管理組件的狀態(tài),這篇文章主要介紹了Vue.js 3.x 中的響應(yīng)式數(shù)據(jù):ref 與 reactive,需要的朋友可以參考下2024-01-01
Vue導(dǎo)出頁面為PDF格式的實(shí)現(xiàn)思路
這篇文章主要介紹了Vue導(dǎo)出頁面為PDF格式的實(shí)現(xiàn)思路,其實(shí)思路也很簡(jiǎn)單,就是將頁面轉(zhuǎn)換成圖片格式.然后通過圖片的base64碼.生成PDF..感興趣的朋友跟隨腳本之家小編一起看看吧2018-07-07

