无法用 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)

无法用鼠标拖动 jcrop 选择

MYSQL为啥用IP地址无法连接

MYSQL为啥用IP地址无法连接

MYSQL为啥用IP地址无法连接