var vue = new Vue({ el: "#notification", data: { Message: "" }, methods: { getMessage: function () { var self = this; $.ajax({ url: "../Manage/Message/GetMessage", type: "get", dataType: "json", async: false, success: function (data) { self.Message = data; } }) } }, mounted: function() { this.getMessage(); setInterval(this.getMessage, 3000); } })
注:這里有三個關鍵點:
1、在methods里使用ajax的時候要把this先賦值一個設定的參數,不然ajsx內無法訪問到this對象;
2、輪詢執行要在mounted鈎子方法下做,具體說明見下;
3、setInterval中調用方法時不要加()及引號等。
Vue每個鈎子函數都在啥時間觸發
beforeCreate
在實例初始化之后,數據觀測(data observer) 和 event/watcher 事件配置之前被調用。
created
實例已經創建完成之后被調用。在這一步,實例已完成以下的配置:數據觀測(data observer),屬性和方法的運算, watch/event 事件回調。然而,掛載階段還沒開始,$el 屬性目前不可見。
beforeMount
在掛載開始之前被調用:相關的 render 函數首次被調用。
mounted
el 被新創建的 vm.$el 替換,並掛載到實例上去之后調用該鈎子。
beforeUpdate
數據更新時調用,發生在虛擬 DOM 重新渲染和打補丁之前。 你可以在這個鈎子中進一步地更改狀態,這不會觸發附加的重渲染過程。
updated
由於數據更改導致的虛擬 DOM 重新渲染和打補丁,在這之后會調用該鈎子。
當這個鈎子被調用時,組件 DOM 已經更新,所以你現在可以執行依賴於 DOM 的操作。然而在大多數情況下,你應該避免在此期間更改狀態,因為這可能會導致更新無限循環。
該鈎子在服務器端渲染期間不被調用。
beforeDestroy
實例銷毀之前調用。在這一步,實例仍然完全可用。
destroyed
Vue 實例銷毀后調用。調用后,Vue 實例指示的所有東西都會解綁定,所有的事件監聽器會被移除,所有的子實例也會被銷毀。 該鈎子在服務器端渲染期間不被調用。