Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack 同一页面上的两个aurelia应用绑定两次_Webpack_Aurelia - Fatal编程技术网

Webpack 同一页面上的两个aurelia应用绑定两次

Webpack 同一页面上的两个aurelia应用绑定两次,webpack,aurelia,Webpack,Aurelia,我使用Webpack3将两个单独的Aurelia应用程序捆绑在同一页面上 一个是应用程序的主体,使用标准的setRoot方法: export function configure(aurelia) { aurelia.use .standardConfiguration() .feature(PLATFORM.moduleName('resources/index')); aurelia.start().then(a => {

我使用Webpack3将两个单独的Aurelia应用程序捆绑在同一页面上

一个是应用程序的主体,使用标准的
setRoot
方法:

export function configure(aurelia) {
    aurelia.use
        .standardConfiguration()
        .feature(PLATFORM.moduleName('resources/index'));

    aurelia.start().then(a => {
        aurelia.setRoot(PLATFORM.moduleName('shells/app'),
        document.getElementById('AppBodyContainer'));
    });
}
另一个在旧的MVC视图上使用增强方法

const enhanceNode = (app, node, bindingContext = null) => {
    const engine = app.container.get(TemplatingEngine);
    const component = engine.enhance({
        container: app.container,
        element: node,
        resources: app.resources,
        bindingContext: bindingContext
    });
    component.attached();
};

export function configure(aurelia) {
    aurelia.use
        .standardConfiguration()
        .feature(PLATFORM.moduleName('resources/index'));

    aurelia.start().then(a => {
        enhanceNode(a, document.getElementById('HeaderContainer'));
    });
}
两者都是独立的aurelia应用程序,都使用网页包
aurelia插件

new AureliaPlugin({
    aureliaApp: 'header-app'
}),
问题是,无论何时,当两者都在同一页面上时,
aurelia binding
的单独版本都会相互干扰,这意味着通过
click.delegate
绑定的任何内容都会在单击时触发两次


我做错了什么?

您没有做错任何事情,这是特定于
单击。委派的。Aurelia将一个共享事件侦听器放在
主体
标记上,
委托
事件将冒泡到该标记上,因此每个事件将有两个侦听器


您可以使用
click.trigger
,它不使用事件委派,而是将侦听器直接放在元素上(确保通过从处理程序返回
false
来取消气泡)。

主应用程序已经运行了一段时间,有198个click.delegate实例,所以把它们全部改变是不合理的。然而,我通过在新的应用程序(使用
enhanced
功能的应用程序)中只更改一些内容,就解决了这个问题