我如何在 Aurelia 中创建一个全局函数
How I can make a function Global in Aurelia
这是一个场景。我想在 Aurelia 应用程序之外访问 Aurelia 功能。就像 运行 如果我通过浏览器控制台调用一个方法 "GetNotification(string Message)" 我的应用程序,那么它应该被调用。
原因是我的 Aurelia 应用程序将 运行 在 .Net 应用程序浏览器中。所以我想在我的本机应用程序(.Net)和 Aurelia 应用程序之间进行通信。与在 .Net 浏览器控件中一样,我们可以调用任何 Javascript 函数。但是我无法调用Aurelia Function,因为它没有对外暴露。
我不建议将您的方法直接暴露给全局命名空间。您可以做的是从您的视图模型 class 中注册一个自定义事件处理程序,然后从 .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'
}
}
}));
这是一个场景。我想在 Aurelia 应用程序之外访问 Aurelia 功能。就像 运行 如果我通过浏览器控制台调用一个方法 "GetNotification(string Message)" 我的应用程序,那么它应该被调用。
原因是我的 Aurelia 应用程序将 运行 在 .Net 应用程序浏览器中。所以我想在我的本机应用程序(.Net)和 Aurelia 应用程序之间进行通信。与在 .Net 浏览器控件中一样,我们可以调用任何 Javascript 函数。但是我无法调用Aurelia Function,因为它没有对外暴露。
我不建议将您的方法直接暴露给全局命名空间。您可以做的是从您的视图模型 class 中注册一个自定义事件处理程序,然后从 .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'
}
}
}));