如何在Laravel中使用Vuetify(VAutocomplete)

时间:2019-07-30 12:07:17

标签: laravel vue.js vuetify.js

我正在尝试在laravel项目的vue组件中使用VAutocomplete。

我这样安装了vuetify:

npm install vuetify

用于加载组件的.js如下所示:

import Vue from 'vue'
import Vuetify from 'vuetify'
Vue.use(Vuetify)

import 'vuetify/dist/vuetify.min.css';

import MyComponent from './components/MyComponent.vue';




const app = new Vue({
    el: '#my-component,
    components: {
        MyComponent
    },
    render: h => h(MyComponent)
});

MyComponent.vue:

<template>
    <div>
      <v-autocomplete
                    label="Components"
                    :items="components"
            ></v-autocomplete>


    </div>
</template>

<script>

    export default {
        name: "MyComponent",
        data: function () {
            return {
                components: [
                    'Autocompletes', 'Comboboxes', 'Forms', 'Inputs', 'Overflow Buttons', 'Selects', 'Selection Controls', 'Sliders', 'Textareas', 'Text Fields',
                ],
            }
        },
}
</script>

我在浏览器控制台中看到以下错误:

[Vue warn]: Error in render: "TypeError: undefined is not an object (evaluating 'this.$vuetify.lang.t')"

found in

---> <VAutocomplete>

Laravel是5.6 Vue 2.9.6 Vuetify 2.0.2

有人可以给我提示以开始使用vuetify吗?谢谢!

2 个答案:

答案 0 :(得分:1)

我有同样的问题。解决方法如下:

确保将正确的vue和vue-template-compiler版本添加到package.json。 然后删除“ node_modules”文件夹并重新安装:

npm install

您还应该在webpack.mix.js中导入VueLoaderPlugin。

const VueLoaderPlugin = require('vue-loader/lib/plugin')

您的混音呼叫应如下所示:

mix.js('resources/assets/js/app.js', 'public/js').extract(['vue'])
    .js('resources/assets/js/mycomponent.js', 'public/js')
    .sass('resources/assets/sass/app.scss', 'public/css').webpackConfig({
    plugins: [
        new VueLoaderPlugin()
    ]
}).sourceMaps();

.sourceMap()以避免丢失vuetify.js.map错误。

答案 1 :(得分:0)

错误是因为您错过了“

const app = new Vue({
el: '#my-component', <=here
   components: {
        MyComponent
    },
    render: h => h(MyComponent)
});

另一个错误是您的模板中没有ID。

它应该以这种方式工作:

<div id="my-component">
    <v-app id="inspire">
        <div>
          <v-autocomplete
             label="Components"
             :items="components"
         ></v-autocomplete>
      </div>
    </v-app>
</div>

脚本:

new Vue({
el: '#my-component',
vuetify: new Vuetify(),
data () {
    return {
       components: [
           'Autocompletes', 'Comboboxes', 'Forms', 'Inputs', 'Overflow Buttons', 'Selects', 'Selection Controls', 'Sliders', 'Textareas', 'Text Fields'],
        }
    },
})