Javascript 如何在多选主列表中设置布线模式?
我在master detail应用程序中有一个主列表,当我将其设置为多选模式时,我想捕获所有选中项目的用户ID。是否有任何优雅的方式通过路由将这些数据传递到Javascript 如何在多选主列表中设置布线模式?,javascript,sapui5,Javascript,Sapui5,我在master detail应用程序中有一个主列表,当我将其设置为多选模式时,我想捕获所有选中项目的用户ID。是否有任何优雅的方式通过路由将这些数据传递到detail.controller.js 我的单选母版页中的showDetail函数(“模式”:“User/{objectId}”): 我应该使用User/{objectIdArray},User/id1/id2/…还是什么?它在URL中看起来会很奇怪吗 参考:感谢@Marc,以下是我的代码: manifest.json:
detail.controller.js
我的单选母版页中的showDetail函数(“模式”:“User/{objectId}”
):
我应该使用User/{objectIdArray}
,User/id1/id2/…
还是什么?它在URL中看起来会很奇怪吗
参考:感谢@Marc,以下是我的代码: manifest.json:
{
"pattern": "MultiSelect/{objectIds}",
"name": "multi",
"target": [
"master",
"multi"
]
}
Master.controller.js
_showDetail : function (oItem) {
const masterModel = this._oList.getMode();
if(masterModel === "None") {
this.getRouter().navTo("object", {
objectId : oItem.getBindingContext().getProperty("userID")
}, false);
} else { //MultiSelect Mode
const lists = this._oList.getSelectedItems(),
ids = lists.map(item => item.getBindingContext().getProperty("userID"));
this.getRouter().navTo("multi", {
objectIds : JSON.stringify(ids)
}, true);
}
},
_onMultiMatched : function (oEvent) {
const sObjectIds = oEvent.getParameter("arguments").objectIds,
idArray = JSON.parse(sObjectIds);
//... Do whatever I like
}
MultiUser.controller.js
_showDetail : function (oItem) {
const masterModel = this._oList.getMode();
if(masterModel === "None") {
this.getRouter().navTo("object", {
objectId : oItem.getBindingContext().getProperty("userID")
}, false);
} else { //MultiSelect Mode
const lists = this._oList.getSelectedItems(),
ids = lists.map(item => item.getBindingContext().getProperty("userID"));
this.getRouter().navTo("multi", {
objectIds : JSON.stringify(ids)
}, true);
}
},
_onMultiMatched : function (oEvent) {
const sObjectIds = oEvent.getParameter("arguments").objectIds,
idArray = JSON.parse(sObjectIds);
//... Do whatever I like
}
感谢@Marc,以下是我的代码: manifest.json:
{
"pattern": "MultiSelect/{objectIds}",
"name": "multi",
"target": [
"master",
"multi"
]
}
Master.controller.js
_showDetail : function (oItem) {
const masterModel = this._oList.getMode();
if(masterModel === "None") {
this.getRouter().navTo("object", {
objectId : oItem.getBindingContext().getProperty("userID")
}, false);
} else { //MultiSelect Mode
const lists = this._oList.getSelectedItems(),
ids = lists.map(item => item.getBindingContext().getProperty("userID"));
this.getRouter().navTo("multi", {
objectIds : JSON.stringify(ids)
}, true);
}
},
_onMultiMatched : function (oEvent) {
const sObjectIds = oEvent.getParameter("arguments").objectIds,
idArray = JSON.parse(sObjectIds);
//... Do whatever I like
}
MultiUser.controller.js
_showDetail : function (oItem) {
const masterModel = this._oList.getMode();
if(masterModel === "None") {
this.getRouter().navTo("object", {
objectId : oItem.getBindingContext().getProperty("userID")
}, false);
} else { //MultiSelect Mode
const lists = this._oList.getSelectedItems(),
ids = lists.map(item => item.getBindingContext().getProperty("userID"));
this.getRouter().navTo("multi", {
objectIds : JSON.stringify(ids)
}, true);
}
},
_onMultiMatched : function (oEvent) {
const sObjectIds = oEvent.getParameter("arguments").objectIds,
idArray = JSON.parse(sObjectIds);
//... Do whatever I like
}
多选的目的是什么?根据指南,此应用程序类型应用于选择一个要在详细信息中显示的项目:我希望在详细信息页面中显示所有选定项目的信息。所以这是不允许的?你不应该太在意你的URL的外观。一个想法是:用一个简单的分隔符(例如“User/001002003”)连接您的ID,并在详细信息中拆分该字符串?根据指南,此应用程序类型应用于选择一个要在详细信息中显示的项目:我希望在详细信息页面中显示所有选定项目的信息。所以这是不允许的?你不应该太在意你的URL的外观。一个想法是:用一个简单的分隔符(例如“User/001002003”)连接您的ID,并在Detail.controller中拆分该字符串