gpt4 book ai didi

sapui5 - 获取按下表行的绑定(bind)数据对象 - getBindingContext() 返回 undefined

转载 作者:行者123 更新时间:2023-12-03 09:46:44 25 4
gpt4 key购买 nike

在 SAP UI5 中,我尝试获取用户按下时绑定(bind)到表行的数据对象(在我的 Controller 中)。我的 View 是用 XML 定义的,而我的 Controller 当然是用 JS 定义的。

我检查了How to get content of a row in sap.m.table已经,但它对我不起作用,或者缺少某些东西。

我的观点(相关部分):

<Panel>
<Table id="lineItemList" items="{
path: 'statusJobs>/jobs',
sorter: {
path: 'start',
descending: true
}
}">
<headerToolbar>
<!-- ... -->
</headerToolbar>
<columns>
<Column hAlign="Left" vAlign="Middle">
<Label text="Job" />
</Column>
<Column hAlign="Center" vAlign="Middle">
<Label text="Start" />
</Column>
<Column hAlign="Center" vAlign="Middle">
<Label text="End" />
</Column>
<Column hAlign="Right" vAlign="Middle">
<Label text="Success" />
</Column>
</columns>
<ColumnListItem
type="Navigation"
press=".handleLineItemPress"
>
<Text text="{statusJobs>job}" />
<Text text="{
path: 'statusJobs>start',
formatter:'util.Formatter.Date'}"
/>
<Text text="{
path: 'statusJobs>end',
formatter: 'util.Formatter.Date'}"
/>
<Text text="{statusJobs>status}"/>
</ColumnListItem>
</Table>

这里的相关部分显然是:

<ColumnListItem
type="Navigation"
press=".handleLineItemPress"
>

在我的 Controller 中,我有这个:

handleLineItemPress: function(evt) {
console.log('evt.getSource: ' + evt.getSource());
console.log('evt.getBindingContext: ' + evt.getSource().getBindingContext());
}

其中记录如下:

evt.getSource: Element sap.m.ColumnListItem#__item11-StatusJobs--lineItemList-0 evt.getBindingContext: undefined


evt.getSource返回 ColumnListItem,所以当然从那里,我可以使用对象层次结构并获取单元格的文本,例如:

evt.getSource().getCells()[0].getText();

但这似乎不是正确的方法,尤其是没有给出整个对象或其唯一 ID,我碰巧没有在表格中显示。

我不知何故错过了回到我的数据模型的连接,我之前在代码中绑定(bind)的 <Table>项,如下:
items="{
path: 'statusJobs>/jobs',
sorter: {
path: 'start',
descending: true
}
}"

最佳答案

我不想这么说,但我遇到了同样的问题,我花了很长时间才找到原因......

这都与命名模型的使用有关,在您的情况下 statusJobs .

如果您想检索绑定(bind)到命名属性的项目的绑定(bind)上下文,出于某种原因(老实说,我想不出任何原因),您还必须指定命名模型:

evt.getSource().getBindingContext("statusJobs");

将返回正确的绑定(bind)上下文。

因此,要检索绑定(bind)到按下的行项目的实际对象,您可以使用:
var obj = evt.getSource().getBindingContext("statusJobs").getObject();

由于上下文不能绑定(bind)到多个模型(据我所知),我真的不明白为什么您需要专门将命名模型名称作为参数,但现在我想我们必须忍受这种行为

关于sapui5 - 获取按下表行的绑定(bind)数据对象 - getBindingContext() 返回 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24896078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com