Sapui5 如何不通过手机显示DetailNoObjectsAvailable视图?

Sapui5 如何不通过手机显示DetailNoObjectsAvailable视图?,sapui5,master-detail,Sapui5,Master Detail,我已经从主细节模板创建了一个sapui5项目。我想要实现的是通过手机显示一个空列表(在主视图中),而无需导航到DetailNoObjectsAvailable视图。我就是找不到调用DetailNoObjectsAvailable视图的位置 我希望实现这一点的原因是,当列表开头没有对象,然后将对象添加到odata源时,我只看到“没有可用对象”,无法导航到主列表以手动刷新它。我必须在fiori客户端浏览器中刷新整个页面才能看到它。当列表开始时不是空的,并且我向ODataSource添加了一个对象时,

我已经从主细节模板创建了一个sapui5项目。我想要实现的是通过手机显示一个空列表(在主视图中),而无需导航到DetailNoObjectsAvailable视图。我就是找不到调用DetailNoObjectsAvailable视图的位置

我希望实现这一点的原因是,当列表开头没有对象,然后将对象添加到odata源时,我只看到“没有可用对象”,无法导航到主列表以手动刷新它。我必须在fiori客户端浏览器中刷新整个页面才能看到它。当列表开始时不是空的,并且我向ODataSource添加了一个对象时,列表会自动刷新,并且我在查看它时不会遇到任何问题


我没有更改路由定义中的任何内容:
“路由”:[
{
“图案”:“图案”,
“姓名”:“船长”,
“目标”:[
“对象”,
“主人”
]
}, {
“模式”:“访问者\视图/{objectId}”,
“名称”:“对象”,
“目标”:[
“主人”,
“对象”
]
}
],
“目标”:{
“主人”:{
“视图名称”:“主视图”,
“视图级别”:1,
“视图ID”:“主视图”,
“控制聚合”:“母版页”
},
“对象”:{
“视图名称”:“详细信息”,
“视图ID”:“详细信息”,
“视图级别”:2
},
“detailObjectNotFound”:{
“viewName”:“DetailObjectNotFound”,
“视图ID”:“detailObjectNotFound”
},
“detailNoObjectsAvailable”:{
“视图名称”:“DetailNoObjectsAvailable”,
“视图ID”:“detailNoObjectsAvailable”
},
“未找到”:{
“视图名称”:“未找到”,
“视图ID”:“未找到”
}

}
到notFoundobject的路由机制位于manifest.json中:

manifest.json:在路由配置中绕过+目标

 "routing": {
            "config": {
                "routerClass": "sap.f.routing.Router",
                "viewType": "XML",
                "viewPath": "test.test.view",
                "controlId": "layout",
                "controlAggregation": "beginColumnPages",
                "bypassed": {
                    -------> "target": "notFound" <--------
                },
                "async": true
            },



"targets": {
                "notFound": {
                    "viewName": "NotFound",
                    "viewId": "notFound"
                }
            }
“路由”:{
“配置”:{
“路由类”:“sap.f.routing.Router”,
“视图类型”:“XML”,
“视图路径”:“test.test.view”,
“controlId”:“布局”,
“controlAggregation”:“beginColumnPages”,
“绕过”:{
------->“目标”:“未找到”
这就是你要找的,对吗

在manifest.json中绕过的部分中,将“target”:“notFound”更改为“target”:“master”,可能可以解决您的问题

更新:Detail.controller.js

_onBindingChange : function () {
            var oView = this.getView(),
                oElementBinding = oView.getElementBinding();

            // No data for the binding
            if (!oElementBinding.getBoundContext()) {
                this.getRouter().getTargets().display("detailObjectNotFound");  <------------
                // if object could not be found, the selection in the master list
                // does not make sense anymore.
                this.getOwnerComponent().oListSelector.clearMasterListSelection();
                return;
            }
\u onBindingChange:函数(){
var oView=this.getView(),
oElementBinding=oView.getElementBinding();
//没有用于绑定的数据
如果(!oElementBinding.getBoundContext()){

这个.getRouter().getTargets().display(“detailObjectNotFound”);通过注释ListSelector.js中的一些行解决了问题。它们在控制台中导致了一个错误,这反过来也是我的问题的原因:

构造函数:函数(){
this.\u oWhenListHasBeenSet=新承诺(函数(fnResolveListHasBeenSet){
这。_fnResolveListHasBeenSet=fnResolveListHasBeenSet;
}.约束(这个);
this.owhenlistloadingsdone=新承诺(函数(fnResolve,fnReject){
这个._owhenlist已经设置好了
.then(功能(oList){
oList.getBinding(“项目”)。附件(“数据接收”,
功能(oData){
如果(!oData.getParameter(“数据”)){
fnReject({
名单:寡头党,
错误:正确
});
}
var oFirstListItem=this.getFirstListItem();
如果(oFirstListItem){
fnResolve({
名单:寡头党,
firstListitem:oFirstListItem
});
} 
//否则{
//fnReject({
//名单:寡头党,
//错误:false
// 	});
//}
}.绑定(此)
);
}.约束(这个);
}.约束(这个);

},
请在您的
清单中显示您的路由定义。json
我没有更改路由定义中的任何内容。将其添加到POSTS:对于移动自适应,使用搜索有条件地切换特定设备的内容。但我认为manifest.json是一个全局设置。在视图级别,您只能将更改应用于移动设备。Ch选中此“notFound”不是我感兴趣的视图。当列表中没有对象时,它将导航到“DetailNoObjectsAvailable”视图。我找不到它在代码中的位置。这个视图在manifest.json、master controller和listSelector controller中都没有提到……详细地说。controller我更改了我的响应。希望这有帮助。“detailObjectNotFound”也不是我所说的视图:)它是“detailNoObjectsAvailable”我仍然对detailNoObjectsAvailable路由的调用位置感兴趣
_onBindingChange : function () {
            var oView = this.getView(),
                oElementBinding = oView.getElementBinding();

            // No data for the binding
            if (!oElementBinding.getBoundContext()) {
                this.getRouter().getTargets().display("detailObjectNotFound");  <------------
                // if object could not be found, the selection in the master list
                // does not make sense anymore.
                this.getOwnerComponent().oListSelector.clearMasterListSelection();
                return;
            }