代码之家  ›  专栏  ›  技术社区  ›  blackbird

无法通过插件访问vue.js全局函数

  •  0
  • blackbird  · 技术社区  · 5 年前

    我正在尝试将一些常用函数重构为我的应用程序的全局可用的util插件。我遵循了 docs this question ,但我不确定如何使用它模板和vue中的函数一直抱怨未定义的方法。理想情况下我只想打电话 isEmpty 从任何子组件。

    实用程序js

    export default {
      install(Vue, options) {
          Vue.isEmpty = function (object) {
            return false // dummy function for now to check if method works
          }
      }
    }
    

    也尝试过:

    Util.install = function (Vue, options) {
      Vue.isEmpty = function () {
        ...
      }
      // this doesn't work either
      // Vue.prototype.$isEmpty = function (object) {
      // return false
      //  }
    }
    

    主.js

    import util from './components/shared/util.js'
    import comp from './components/shared/myComponent.js'
    // Vue.component('util', util) this doesn't work
    Vue.use(util)
    
    const app = new Vue({
    ...
    components: {
        comp
    }).$mount('#app')
    

    下面这些都不起作用。抛出的错误是 TypeError: Cannot read property 'isEmpty' of undefined

    组件模板

    <p v-if="util.isEmpty(license)" class="margin-0">N/A</p>
    <p v-if="Vue.isEmpty(license)" class="margin-0">N/A</p>
    <p v-if="isEmpty(license)" class="margin-0">N/A</p>
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Robson Braga    5 年前

    你快完成了,错过了 prototype . 试试这个:

    Utils.js公司

    export default {
      install(Vue, options) {
          Vue.prototype.isEmpty = function (object) {
            return false // dummy function for now to check if method works
          }
      }
    }
    

    组成部分

    <p v-if="isEmpty(license)" class="margin-0">N/A</p>
    

    这里有一个例子: https://codesandbox.io/s/vue-template-tdx00