如何在路由中传递数组值(从multiCombo框)到sapui5

时间:2018-02-28 08:31:20

标签: javascript sapui5 sapui5-theming

我正在尝试将所选项目的值从multiComboBox传递到另一个视图以将其绑定到表格中。 我得到的选定值为



selectedItems = oEvent.getParameter("selectedItems");
		




路由代码:



{
    "pattern": "data/{value}",
    "name": "page2",
    "target": "page2"
}






oRouter.navTo("page2", {
value : JSON.stringify(selectedItems)
}




并将其作为另一个控制器获取:



var output = JSON.parse(oEvent.getParameters("arguments").value);
alert(output);




我得到的错误是 未捕获的TypeError:将循环结构转换为JSON

2 个答案:

答案 0 :(得分:3)

问题在于selectionFinished事件的selectedItems参数实际上是sap.ui.core.Item的数组。大多数UI5元素都不是可序列化的,因为它们包含对父元素的引用,而父元素依次保存对元素本身的引用(从而形成一个循环)。

在我看来,您应该使用所选的键而不是所选的项。您只需使用getSelectedKeys方法即可获得密钥:

var aKeys = oEvent.getSource().getSelectedKeys();

这将返回一个字符串数组,然后可以按照您的意图将其序列化。反序列化后,您可以使用setSelectedKeys方法恢复选择。

答案 1 :(得分:0)

另一种方法是通过在全局模型中设置数据来传递数据,而不是将其作为路由器字符串传递。只需2美分。 :)