javascript - 从 Vue 应用程序外部访问 Vue 方法或事件

标签 javascript jquery requirejs vue.js vuex

我已经忙了很长时间了,还没有想出解决方案。问题是,我希望使用 Require JS 和 Vue/Vuex 构建的模块能够与外界通信。

我不想用这个

require(["myModule"],function(vm){
vm.$children[0].myMethod()
});

或jquery

// inside app
$(document).trigger("myEvent",payload);

// outside app
$(document).on("myEvent",myHandler);

这是我的自定义元素

<div id="app">

    <customer-select></customer-select>

</div>

和我的 main.js。我正在使用 requirejs 加载我的 AMD 模块

define(["./app2/app"], function (CustomerSelectApp) {
    CustomerSelectApp.init("#app");
});

我的 app.js

define([ "vue", "jquery", "webjars/nm-customer-select/nm-customer-select",
    "css!bootstrap-css" ],

function(Vue, $, customerSelect) {

return {
    init : function(targetElement) {
        return new Vue({
            el : targetElement,


            components : {
                customerSelect : customerSelect
            }

        });
    }

};

});

有没有办法让应用/组件通过我传入的事件或引用与外界通信?

具体来说。我想在我的 Vue 应用程序中进行选择,让同一页面上的另一个应用程序知道它并接收所选数据以进一步处理它

最佳答案

您可以尝试使用 window.name 将根 Vue 节点存储为全局变量

define(["./app2/app"], function (CustomerSelectApp) {
    window.VueRoot = CustomerSelectApp.init("#app");
});

然后在你的应用程序的其他部分你可以拥有

VueRoot.method();
VueRoot.data = value;
VueRoot.$emit('event', data);

我建议只对您的根节点执行此操作,否则会污染您的全局命名空间。

关于javascript - 从 Vue 应用程序外部访问 Vue 方法或事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38199665/

相关文章:

javascript - 每 4 个 div 换行 - 错误行为

javascript - 为什么 vue.js 组件在第一次尝试时不显示获取的数据?

javascript - 带有 rails carrierwave/s3 的 jquery fileupload

javascript - 如何隐藏重叠的div而不删除内容

javascript - Bootstrap selectpicker 不适用于 Javascript/JQuery 添加的多个字段

javascript - 根据数组、angularjs 中的值禁用按钮

javascript - 如何确定从其余选择器中选择了哪个?

javascript - 确保加载 requireJS 条件模块

javascript - 为什么 require.js 似乎在初始页面加载时加载了我的所有模块?

javascript - Node.JS 和浏览器之间的 RequireJS 对 jQuery 的简单可选依赖