我们目前正在尝试将现有的工作代码替换为另一个“面向未来的代码”。
基本上,我们有一个独立的应用程序,只要用户单击闪电组件中的按钮,就会调用该应用程序。
一个新窗口打开,独立应用程序加载正常。
这是打开应用程序的代码的快照:
var urlEvent = $A.get("e.force:navigateToURL");
urlEvent.setParams({
"url": '/c/myApp.app?recId=' + component.get('v.recordId') +
'&Rows=' + component.get('v.Rows') + '&Bytes=' +
component.get('v.Bytes')
});
urlEvent.fire();
该应用程序(称为myApp)被调用,我们已经将几个变量传递给它。
我们尝试使用新的lightning:navigation组件,但没有用。
目标是尝试改为构建pageReference或直接解析/创建URL。如果将来Salesforce更改URL格式,可以避免导航中断,这对我们有帮助。
我们遇到的第一个问题是,可用的页面引用类型(必需)是:
•闪电组件(必须实现闪电:isUrlAddressable) •知识文章 •命名页面 •导航项目页面 •对象页 •记录页 •记录关系页面
没有提及应用程序。
文档指出: “这些导航资源仅在Lightning Experience和Salesforce移动应用程序中受支持。其他容器(例如Visualforce的Lightning组件,Lightning Out或社区)不支持这些导航资源。即使您在Lightning Experience中访问这些容器,也是如此。或Salesforce移动应用。”
由于该应用程序是自己运行的(不在Lightning Experience或Salesforce1中),我是否正确地说我们的当前解决方案是唯一可行的方法?
如果没有,那还有什么其他方法,这样我们就不必担心Salesforce方面将来的URL更改了吗?
答案 0 :(得分:0)
一种替代方法是使用从lwc到aura组件的事件通信,保持aura组件作为lwc的父组件触发具有所需url和查询参数的事件 并使用document.addEventListener和fire forcenavigatetoURL或sObject在先兆中监听事件。将来,如果他们支持,我们可以在一个地方进行更改。