gpt4 book ai didi

javascript - 如何在 Laravel 中自定义 vue-filemanager 前端?

转载 作者:行者123 更新时间:2023-12-03 16:19:16 26 4
gpt4 key购买 nike

我正在使用包https://github.com/alexusmai/laravel-file-manager它带有预编译的 js 文件,或者您可以直接通过 https://github.com/alexusmai/vue-laravel-file-manager 中的 npm 使用 vue-component .
但是,在这两种变体中,前端都是不可修改的。
我在我的应用程序中使用 Laravel 文件管理器,我想对 vue 文件进行自定义以更改前端。
到目前为止我尝试了什么:

  • https://github.com/alexusmai/vue-laravel-file-manager/tree/master/src 的复制内容进入 /resources/assets/js/file-manager

  • 然后我创建了一个 file_manager.js像这样:
    import Vue from 'vue';
    import Vuex from 'vuex';
    import FileManager from './file-manager/FileManager.vue';

    Vue.use(Vuex);

    // create Vuex store, if you don't have it
    const store = new Vuex.Store();

    Vue.use(FileManager, {store});


    Vue.component('file-manager', FileManager);


    const app = new Vue({
    store
    el: '#app'
    });
    在我的 webpack.mix.js 文件中,我添加了这一行:
    .js('resources/assets/js/file-manager.js', 'public/js')
    现在 npm run dev有效,但如果我打开包含此内容的页面:
    <div style="height: 600px;">
    <div id="app">
    <file-manager></file-manager>
    </div>
    </div>
    <script src="{{ asset('js/file-manager.js') }}"></script>
    我收到此错误:

    [vuex] unknown mutation type: fm/settings/manualSettings[vuex] unknown mutation type: fm/settings/initAxiosSettings[vuex] unknown action type: fm/initializeApp


    为什么会这样?我需要以不同的方式包含它吗?

    最佳答案

    您需要导入和注册存储模块:

    import Vue from 'vue';
    import Vuex from 'vuex';
    import FileManager from './file-manager/FileManager.vue';
    import fm from './file-manager/store'; // Import modules

    Vue.use(Vuex);

    // create Vuex store, if you don't have it
    const store = new Vuex.Store({modules: {fm}}); // Register modules

    Vue.use(FileManager, {store});

    Vue.component('file-manager', FileManager);

    const app = new Vue({
    store,
    el: '#app'
    });

    解释 file-manager组件期望在全局存储中存在一堆 Action 和突变。在典型用法中,例如通过 npm模块,这些 Action 和突变在 this 中定义入口点文件已在商店中注册 here ,如自述文件中所述。由于您尝试手动注册 file-manager组件而不是由入口点文件注册,您还需要显式注册模块。
    是的,作为替代解决方案,您可以改为从入口点文件 init.js 导入并将其用作插件,以便隐式注册模块和组件:
    import Vue from 'vue';
    import Vuex from 'vuex';
    import FileManager from './file-manager/init'; // Note 'init'

    Vue.use(Vuex);

    // create Vuex store, if you don't have it
    const store = new Vuex.Store();

    Vue.use(FileManager, {store}); // Registers the file-manager component too

    const app = new Vue({
    store,
    el: '#app'
    });

    关于javascript - 如何在 Laravel 中自定义 vue-filemanager 前端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67089068/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com