Vue對象是一個Javascript框架,它提供了很多便捷的方法來處理DOM操作。Vue對象有很多靜態方法,這些方法可以在組件之外使用,它們和Vue實例無關。接下來我們將詳細介紹Vue對象的靜態方法。
<script> Vue.mixin({ created: function () { console.log('Vue對象的全局混入') } }) new Vue({ created: function () { console.log('Vue組件的混入') } }) </script>
Vue.mixin方法可以全局混入對Vue構造函數或組件選項對象的選項。這意味著在每個Vue實例和組件中將自動合并選項。
Vue.extend({ template: '<div>Hello</div>' })
Vue.extend方法可以創建一個“子類”,這個“子類”是Vue的構造函數的擴展。可以在擴展的構造函數中傳遞組件選項。
Vue.nextTick(function () { // DOM 更新了 })
Vue.nextTick方法可以在DOM更新后執行回調函數。通常在需要等待Vue更新頁面后執行某些操作時使用。
Vue.set(this.obj, 'foo', 'value')
Vue.set方法可以將響應式屬性設置為對象。常規的JS數組使用已經可以觸發視圖更新,但是由于Javascript限制不能檢測對象屬性的添加或刪除。通過使用Vue.set方法,您可以在對象上添加響應式屬性。
Vue.delete(this.obj, 'foo')
Vue.delete方法通過刪除對象屬性來移除響應式數據。和Vue.set方法相反,Vue.delete方法可以觸發視圖更新。
var unwatch = vm.$watch( 'a', function (newVal, oldVal) { // 做某些事情 } )
Vue實例提供了$watch方法來觀察Vue實例上的數據變化。$watch方法返回一個取消觀察者的函數。
Vue.directive('my-directive', { bind: function () { // 準備工作 // 比如添加事件監聽器,或是其他只需要執行一次的復雜操作 }, update: function (newValue, oldValue) { // 值更新時的工作 // 也會以初始值為參數調用一次 }, unbind: function () { // 清理工作 // 比如移除事件監聽器等 } })
Vue.directive方法可以全局注冊一個自定義指令,這個自定義指令可以在模板中使用。