Javascript 如何在多选主列表中设置布线模式?

Javascript 如何在多选主列表中设置布线模式?,javascript,sapui5,Javascript,Sapui5,我在master detail应用程序中有一个主列表,当我将其设置为多选模式时,我想捕获所有选中项目的用户ID。是否有任何优雅的方式通过路由将这些数据传递到detail.controller.js 我的单选母版页中的showDetail函数(“模式”:“User/{objectId}”): 我应该使用User/{objectIdArray},User/id1/id2/…还是什么?它在URL中看起来会很奇怪吗 参考:感谢@Marc,以下是我的代码: manifest.json:

我在master detail应用程序中有一个主列表,当我将其设置为多选模式时,我想捕获所有选中项目的用户ID。是否有任何优雅的方式通过路由将这些数据传递到
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中拆分该字符串