Sapui5 UI5 oData和两个依赖选择
我试图使用SAPUI5和XML作为视图的开发范例来创建两个动态选择列表 以下是我的oData模型的示例:Sapui5 UI5 oData和两个依赖选择,sapui5,Sapui5,我试图使用SAPUI5和XML作为视图的开发范例来创建两个动态选择列表 以下是我的oData模型的示例: // create root view var oView = sap.ui.view({ id: "app", viewName: "view.App", type: "JS", viewData: { component : this } });
// create root view
var oView = sap.ui.view({
id: "app",
viewName: "view.App",
type: "JS",
viewData: { component : this }
});
// Load oData Model
var sServiceUrl = "/sap/opu/odata/sap/YKIDS/";
var oModel = new sap.ui.model.odata.ODataModel(sServiceUrl, true, "", "");
oView.setModel(oModel);
- Pernr='00000001'
- Pernr='00000002'
- Pernr='00000001'名称='Jacob'
- Pernr='00000002'名称='Matthew'
- PernrKid='00000010'姓名='Sophia'
- pernrchid='00000011'Name='James'
- pernrchid='00000020'名称='Alexander'
- pernrchid='00000021'名称='Zoe'
- pernrchid='00000022'名称='Oliver'
<Select id="select1" width="100%" items="{ path: '/EmployeeSet' } change="handleSelect1">
<core:Item key="{Pernr}" text="{Name}" />
</Select>
<Select id="select2" width="100%" items="{ path: '/KidsListSet' }>
<core:Item key="{PernrKid}" text="{Name}" />
</Select>
handleAssigments : function(evt){
var context = evt.getParameter("selectedItem").getBindingContext();
var Path = context.getPath() + '/KidsListSet';
var select2 = this.getView().byId("select2");
return select2.bindAggregation("items", Path, new sap.ui.core.Item({ key : "{PernrKid}", text : "{Name}" }));
},
当我更改select1中的值时,select2将被更新,我会看到两个或三个条目(基于第一个选择)
不过,我有几个问题:
// create root view
var oView = sap.ui.view({
id: "app",
viewName: "view.App",
type: "JS",
viewData: { component : this }
});
// Load oData Model
var sServiceUrl = "/sap/opu/odata/sap/YKIDS/";
var oModel = new sap.ui.model.odata.ODataModel(sServiceUrl, true, "", "");
oView.setModel(oModel);
V.如果未选择占位符或空格,则在选择中显示占位符或空格不是更好吗?显示实际值可能会误导用户认为它们已设置好 或者,我不确定您将如何在视图中执行此操作,但您可以在控制器的单元上侦听select1的绑定,并从select1的绑定的第一行更新select2
onInit: function(){
var oSelect1 = this.getView().byId("select1");
var oBinding = oSelect1.getBinding("items");
var handler = function(oEvent) {
//release the handler
oBinding.detachDataReceived(handler);
//get the first row of select1
var aContexts = oEvent.oSource.getContexts();
var row1 = aContexts[0];
//get path to first rows kid list
var Path = row1.getPath() + '/KidsListSet';
//put values for first rows path into model either via select2 or the model
eg oModel.bindList(path)
or select2.bindAggregation("items", Path ....
};
... set up model
var oModel = new ....
//attach handler
oBinding.attachDataReceived(handler);
嗨,Jasper,oBinding未定义,看起来我的视图绑定在控制器初始化期间不可用。有什么想法吗?@earney尝试将模型向上移动,看看是否在Component.js中定义了helpsoModel,但我无法获取绑定onInit。绑定尚未在onInit中建立。视图已经创建(但尚未呈现,这意味着您此时无法在DOM中找到视图)。在这里找到更多关于控制器生命周期挂钩的信息:这也是我的想法@cschuff,在哪里可以访问视图控制器中的数据绑定?