我们目前正在尝试用另一个“未来证明”的代码来替换现有的工作代码。
基本上,我们有一个独立的应用程序,每当用户单击lightning组件中的按钮时都会调用它。
一个新的窗口打开了,独立的应用程序加载正常。
以下是打开应用程序的代码快照:
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:导航组件,但它不起作用。
其目标是尝试构建一个pageReference,或者直接解析/创建一个URL。如果Salesforce在未来更改URL格式,这可以通过避免中断导航来帮助我们。
我们遇到的第一个问题是,可用的pageReference类型(这是必需的)是:
·Lightning组件(必须实现lightning:isUrlAddressable)·知识文章·命名页面·导航项目页面·对象页面·记录页面·记录关系页面
没有对App的引用。
文档声明:“这些导航资源仅在Lightning Experience和Salesforce移动应用程序中受支持。它们在其他容器中不受支持,例如Lightning Components for Visualforce、Lightning Out或Communities。即使您在Lightning Experience或Salesforce移动应用程序中访问这些容器也是如此。”
既然应用程序是自己运行的(不是在Lightning Experience或Salesforce1中),我说我们目前的解决方案是唯一可能的方式吗?
如果不是,还有什么其他方法可以让我们不用担心Salesforce端未来的URL更改?
发布于 2019-05-05 05:20:01
一种替代方案是使用从lwc到aura组件的事件通信,保持aura组件作为来自lwc的父组件,触发具有所需url和查询参数的事件,并使用document.addEventListener和触发forcenavigatetoURL或sObject收听aura中的事件。将来,如果他们支持,我们可以在一个地方进行更改。
https://stackoverflow.com/questions/54121067
复制相似问题