ProjectInfo:在WebIDE 中使用Master/Detail Fiori模板构建应用程序
我的详细信息页面上有一个列表,当选中时,每个项目都应该链接到应用程序详细信息部分的新视图。
Detail.controller.js:
onInspectionSelect : function(oEvent) {
var oBindingContext = oEvent.getParameter(
"listItem").getBindingContext();
this.getEventBus().publish("InspectionDetails", "Context", { context : oBindingContext} );
this.getRouter().myNavToWithoutHash({
currentView : this.getView(),
targetViewName : "DOHMH.view.InspectionDetails",
targetViewType : "XML",
transition : "slide"
}); },
我的InspectionDetails.controller.js:
onInit : function() {
var bus = sap.ui.getCore().getEventBus();
bus.subscribe("InspectionDetails", "Context", this._inspection, this);
},
_inspection : function (channelId, eventId, data) {
if (data && data.context) {
this.getView().setBindingContext(data.context);
var sEntityPath = data.context.getPath();
this.bindView(sEntityPath);
}
},
当我第一次从详细信息页面选择列表项时,它不起作用,因为在选择事件触发发布时,InspectionDetails.controller没有订阅。
不幸的是,我不知道如何正确构建它,也不知道如何提前实例化控制器以避免错过第一个调用。
要在细节中实例化控制器,控制器不起作用:jQuery.sap.request("DOMH.view.InvectionDetails");(返回404),因为它不知道是在获取InspectionDetails.view.xml还是InspectionDetails.controller.js
已解决-感谢所有帮助!
还找到了一个视频解决方案:https://open.sap.com/courses/fiux1/items/3gZjaL857KYu6MYA06dJEs#66
为什么这么复杂?将InspectionDetails视图附加到特定路由,并在回调中设置其绑定上下文。当然,你必须将你的路线扩展到InspectionDetails,因为你需要传递一个ID或任何你想显示的实体。
我会将subscribe调用放在一个知道项目列表和项目详细信息视图的组件上。协调两者。
或者,更简单的方法是不使用事件,而是使用命名模型。当您单击列表上的项目时,您将模型的数据设置为"currentItem",然后绑定到"currentItem>x"的详细信息视图字段将自动更新。
您可以将路由框架和所描述的模型技术相结合,以创建视图之间的无缝导航。