无法用 Lightning:navigation 或 force:navigateToSObject 替换“force:navigateToURL”
Posted
技术标签:
【中文标题】无法用 Lightning:navigation 或 force:navigateToSObject 替换“force:navigateToURL”【英文标题】:Unable replace a "force:navigateToURL" with lightning:navigation or force:navigateToSObject 【发布时间】:2019-06-04 20:57:30 【问题描述】:我们目前正在尝试用另一个“面向未来”的代码替换现有的工作代码。
基本上,我们有一个独立的应用程序,只要用户点击闪电组件中的按钮,就会调用它。
新窗口打开,独立应用加载正常。
这是打开应用的代码截图:
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)被调用,我们有几个变量被传递给它。
我们尝试使用新的闪电:导航组件,但没有成功。
我们的目标是尝试构建 pageReference 或直接解析/创建 URL。如果 Salesforce 将来更改 URL 格式,这可以帮助我们避免导航中断。
我们遇到的第一个问题是,可用的pageReference Types(这是必需的)是:
• 闪电组件(必须实现闪电:isUrlAddressable) • 知识文章 • 命名页面 • 导航项目页面 • 对象页面 • 记录页面 • 记录关系页面
没有对应用程序的引用。
文档指出: “这些导航资源仅在 Lightning Experience 和 Salesforce 移动应用程序中受支持。它们在其他容器中不受支持,例如用于 Visualforce、Lightning Out 或社区的 Lightning 组件。即使您在 Lightning Experience 中访问这些容器也是如此或 Salesforce 移动应用程序。”
由于应用程序是自行运行的(不在 Lightning Experience 或 Salesforce1 中),我是否正确地说我们当前的解决方案是唯一可行的方法?
如果不是,还有什么其他方法可以让我们不必担心 Salesforce 端的未来 URL 更改?
【问题讨论】:
【参考方案1】:另一种方法是使用从 lwc 到 aura 组件的事件通信,将 aura 组件保持为 lwc 的父级,触发具有所需 url 和查询参数的事件 并使用 document.addEventListener 监听 aura 中的事件并触发 forcenavigatetoURL 或 sObject。将来如果他们支持,我们可以在一个地方进行更改。
【讨论】:
以上是关于无法用 Lightning:navigation 或 force:navigateToSObject 替换“force:navigateToURL”的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu无法用root远程登录(xshell无法用root登录ubuntu,VS无法用root远程调试ubuntu)
ubuntu无法用root远程登录(xshell无法用root登录ubuntu,VS无法用root远程调试ubuntu)