SAPUI5 按下按钮时打开链接

Xuk*_*uki 3 javascript xml sapui5

我有一个 SAPUI5 应用程序,并且希望在单击按钮时打开一个链接。

我从 OData 调用中获取了特定链接的值,并且普通<Link>控件在远程数据路径上运行良好。

<Link href="{oData>/Url}" target="_blank" text="Click me" />
Run Code Online (Sandbox Code Playgroud)

尝试了多种方法来打开网站<Button>,但没有一个对我有用。

我试图在里面放一个按钮。

<Link target="_blank" href="{oData>/Url}" text="Click me">
  <Button text="Open Website"/> <!-- Error: Cannot add direct child without default aggregation defined for control sap.m.Link -->
</Link>
Run Code Online (Sandbox Code Playgroud)

但我收到上述错误。

尝试使用 HTML 链接,但它无法处理远程数据的路径:

<html:a href="{oData>/Url}" target="_blank"><Button text="Open Website"/></html:a>
Run Code Online (Sandbox Code Playgroud)

SAPUI5 应用程序在 SAP Web IDE 中打开且 URL 无效

然后我尝试onPress在使用按钮和window.open函数时使用事件处理程序:

<Button text="Open Website" press=".onPress" />
Run Code Online (Sandbox Code Playgroud)
{ // In the Controller
  onPress: function () {
    window.open("{oData>/Url}","_blank");
  },
}
Run Code Online (Sandbox Code Playgroud)

但控制器也无法处理远程数据的路径,从而导致相同的无效 URL。

我还阅读URLHelper并尝试了此示例,但我无法将“value”属性添加到按钮。

Bog*_*ann 5

UI5 提供了sap/m/library.URLHelper这一点。

<Button xmlns="sap.m"
  xmlns:core="sap.ui.core"
  core:require="{ sapMLib: 'sap/m/library' }"
  text="Open Website"
  press="sapMLib.URLHelper.redirect(${myModel>/Url}, ${myViewModel>/newTab})"
/>
Run Code Online (Sandbox Code Playgroud)

文档


如果目标URL需要进一步处理:

<Button text="Open Website" press=".openUrl(${myModel>/urlPart}, true)" />
Run Code Online (Sandbox Code Playgroud)
openUrl: function(urlPart, newTab) {
  const url = urlPart/*...*/;
  const { URLHelper } = sapMLib; // sapMLib required from "sap/m/library"
  URLHelper.redirect(url, newTab);
},
Run Code Online (Sandbox Code Playgroud)