我正在尝试将所选项目的值从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
答案 0 :(得分:3)
问题在于selectionFinished事件的selectedItems
参数实际上是sap.ui.core.Item的数组。大多数UI5元素都不是可序列化的,因为它们包含对父元素的引用,而父元素依次保存对元素本身的引用(从而形成一个循环)。
在我看来,您应该使用所选的键而不是所选的项。您只需使用getSelectedKeys方法即可获得密钥:
var aKeys = oEvent.getSource().getSelectedKeys();
这将返回一个字符串数组,然后可以按照您的意图将其序列化。反序列化后,您可以使用setSelectedKeys
方法恢复选择。
答案 1 :(得分:0)
另一种方法是通过在全局模型中设置数据来传递数据,而不是将其作为路由器字符串传递。只需2美分。 :)