【问题标题】:How I can make a function Global in Aurelia我如何在 Aurelia 中使函数全局化
【发布时间】:2020-03-18 09:37:00
【问题描述】:

这是一个场景。我想在 Aurelia 应用程序之外访问 Aurelia 功能。就像在运行我的应用程序时,如果我通过浏览器控制台调用方法“GetNotification(string Message)”,那么它应该被调用。

原因是我的 Aurelia 应用程序将在 .Net 应用程序浏览器中运行。所以我想在我的本机应用程序(.Net)和 Aurelia 应用程序之间进行通信。与.Net 浏览器控件一样,我们可以调用任何Javascript 函数。但是我无法调用 Aurelia Function,因为它没有暴露在外部。

【问题讨论】:

  • 太模糊了。你的 Aurelia 功能是什么。它在做什么?

标签: aurelia global-functions


【解决方案1】:

我不建议将您的方法直接暴露给全局命名空间。您可以做的是从您的 viewmodel 类中注册一个自定义事件处理程序,然后从 .net 站点触发它,例如 ...

// ViewModel within aurelia
export class MyViewModel {
    attached(){
        document.body.addEventListener('custom-event', event => {
            this.myViewModelMethod(event.detail); // just keep in mind the scope
        }, false);
    }

    myViewModelMethod(data) {
        console.log('data', data);
    }
}

// .NET (outside the aurelia app)
// keep in mind CustomEvent is supported by most browsers but for IE it's only IE11
// see: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
document.body.dispatchEvent(new CustomEvent('custom-event', { 
    detail: {
        myData: {
           prop1:'prop1'
        }
    }
}));

【讨论】:

  • 绝对是更好的策略之一!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
相关资源
最近更新 更多