没有模型的拆分应用程序的详细信息页
Detail page of split app without model
在我的拆分应用程序中,详细视图不绑定任何模型。
在component.js
中,我实例化了一个命名模型,如下所示:
// creation and setup of the oData model
var oConfig = {
metadataUrlParams: {},
json: true,
defaultBindingMode : "TwoWay",
defaultCountMode : "Inline",
useBatch : false
}
// ### tab-employee ###
var oModelEmpl = new sap.ui.model.odata.v2.ODataModel("/sap/opu/odata/sap/EMP_SRV"), oConfig);
oModelEmpl.attachMetadataFailed(function() {
this.getEventBus().publish("Component", "MetadataFailedEMPL");
}, this);
this.setModel(oModelEmpl, "EMPL");
主视图控制器中的方法onSelect
是通过单击列表项来激发的。
onSelect: function(oEvent) {
this.showDetail(oEvent.getParameter("listItem") || oEvent.getSource());
}
这将调用方法showDetail
showDetail: function(oItem) {
var bReplace = jQuery.device.is.phone ? false : true;
this.getRouter().navTo("detail", {
from: "master",
entity: oItem.getBindingContext('EMPL').getPath().substr(1),
}, bReplace);
},
在细节视图的控制器中,我有这两种更新绑定的方法。onRouteMatched
调用bindView
,在那里我得到错误消息TypeError: oView.getModel(...) is undefined
。
onRouteMatched: function(oEvent) {
var oParameters = oEvent.getParameters();
jQuery.when(this.oInitialLoadFinishedDeferred).then(jQuery.proxy(function() {
var oView = this.getView();
if (oParameters.name !== "detail") {
return;
}
var sEntityPath = "/" + oParameters.arguments.entity;
this.bindView(sEntityPath);
}, this));
},
bindView: function(sEntityPath) {
var oView = this.getView();
oView.bindElement(sEntityPath);
//Check if the data is already on the client
if (!oView.getModel().getData(sEntityPath)) {
// Check that the entity specified was found.
oView.getElementBinding().attachEventOnce("dataReceived", jQuery.proxy(function() {
var oData = oView.getModel().getData(sEntityPath);
if (!oData) {
this.showEmptyView();
this.fireDetailNotFound();
} else {
this.fireDetailChanged(sEntityPath);
}
}, this));
} else {
this.fireDetailChanged(sEntityPath);
}
},
我已经尝试实现这个相对于WebIDE生成的模板的拆分应用程序。知道缺了什么吗?
正如您自己写的,您正在创建一个名为"EMPL"
的"命名模型"。
在控制器中,您必须使用相同的名称才能获得型号:
this.getView().getModel("EMPL");
同样,当调用bindElement()
时,您必须提供型号名称:
// Assuming sEntityPath = "/items/0"
this.getView().bindElement("EMPL>" + sEntityPath);
相关文章:
- 如何使网络应用程序保留信息
- 如何将信息从网络服务器发送到Electron应用程序
- 表详细信息中的引导程序下拉列表
- 树莓派应用程序信息网页
- 如何使用Javascript/jQuery将信息从查询字符串传递到Facebook中的页面选项卡应用程序
- 我如何创建一个Chrome应用程序,有效地充当信息亭模式下的启动页面
- 没有模型的拆分应用程序的详细信息页
- 如何在javascript应用程序JSON中存储和访问信息项
- DHTMLX 移动调度程序事件详细信息视图高度问题
- 运行代码以在Android应用程序中单击javascript按钮?尝试在页面上抓取回复按钮联系信息 craigslist
- 使用安卓应用程序接收蓝牙设备的信息
- 如何将信息白两个角度应用程序作为第二个应用程序路径的标头传递
- Rally sdk 2实用程序用于创建指向详细信息页面/编辑弹出窗口的链接
- 如何使用php创建应用程序ID后从Facebook获取用户详细信息
- 通过从安卓浏览器重定向的javascript打开应用程序的谷歌播放详细信息页面
- EmberJS 应用程序中列表 + 详细信息 + 编辑视图的数据处理
- 当用户运行我们的应用程序时,我如何获取设备详细信息
- 关闭工作灯应用程序点击基于sim卡的详细信息
- 使用.getJSON获取Play Store应用程序详细信息时,获取跨来源块请求[CORS]错误
- 无法在ui5应用程序的详细信息页面中查看模型信息