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