这是一个场景。我想在Aurelia应用程序之外访问Aurelia函数。就像在运行应用程序时,如果我通过浏览器控制台调用方法“ GetNotification(string Message)”,则应该调用该方法。
原因是我的Aurelia应用程序将在.Net应用程序浏览器中运行。所以我想在本机应用程序(.Net)和Aurelia应用程序之间进行通信。与.Net浏览器控件一样,我们可以调用任何Javascript函数。但是我无法调用Aurelia函数,因为它没有在外部公开。
这是一个场景。我想在Aurelia应用程序之外访问Aurelia函数。就像在运行应用程序时,如果我通过浏览器控制台调用方法“ GetNotification(string Message)”,则应该调用该方法。
原因是我的Aurelia应用程序将在.Net应用程序浏览器中运行。所以我想在本机应用程序(.Net)和Aurelia应用程序之间进行通信。与.Net浏览器控件一样,我们可以调用任何Javascript函数。但是我无法调用Aurelia函数,因为它没有在外部公开。
我不建议直接将您的方法公开给全局名称空间。您可以做的是从您的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'
}
}
}));