Vue.js是一個漸進式JavaScript 框架。在Vue.js中,invoke()是Vue的一個方法,可以用于調用當前實例上的方法。invoke()接受兩個參數:methodName和args。
Vue.directive('clickout', { bind: function (el, binding, vnode) { var cb = binding.value el.__vueClickOut__ = function (e) { var isClick_out = !el.contains(e.target) var isSelf = el === e.target var isChild = el.contains(e.target) if (isClick_out && !isSelf && !isChild) { cb() } } document.addEventListener('click', el.__vueClickOut__) }, update: function (el, binding) { el.__vueClickOut__ = binding.value }, unbind: function (el, binding) { document.removeEventListener('click', el.__vueClickOut__) delete el.__vueClickOut__ } })
在上面的示例中,我們定義了一個全局指令,并使用invoke()方法在綁定(bind)和更新(update)階段執行回調函數。在這個例子中,指令會在點擊元素外面(即目標元素不包含在指令元素內部)時執行指定的回調函數。
當方法名(methodName)是一個字符串時,invoke()會從當前實例上查找這個方法。如果找到了這個方法,則返回方法執行的結果。否則,返回undefined。我們可以使用args參數來傳遞一個數組參數,這些參數將作為方法的參數傳遞。
var vm = new Vue({ methods: { greet: function (message) { console.log('Hello ' + message + '!') } } }) vm.$invoke('greet', ['World']) // Hello World!
在上面的示例中,我們定義了一個名為greet的方法,并在vm實例上調用它,并傳遞一個字符串參數'World'。這里使用了invoke()方法來執行greet()函數,而不是直接調用它。
總之,Vue的invoke()方法是非常實用的,并且可以幫助我們管理Vue實例上的方法。我們可以將其用于全局指令、鉤子函數或組件方法等地方,從而提高我們的Vue開發效率。