TwoWay绑定到XMLModel,按钮Custom Data属性不更新模型



我在更新sap.ui.model.xml.XMLModel的值时遇到了一个很大的问题。

它由TwoWay绑定到Button控件的XMLModel和自定义数据组成
更新JS代码中的自定义数据值不会更新XMLModel,因此按钮描述、列表项的优先级等不会改变。我已经不知道了,所以请帮助

JS代码的一部分,我在其中更新自定义数据(这是按钮调用的方法(-这很有效:

oEvent.getSource().data("Przeczytane", "true");

XML视图:

<List items="{InfoNotif>/soap-env:Body/n0:ReadAdminMessageResponse/Dane/ListaKomunikatowAdministratora/KomunikatAdministratora}">
<NotificationListItem
title="{InfoNotif>Tytul/text()}"
description="{InfoNotif>Opis/text()}"
showCloseButton="false"
datetime="{InfoNotif>DataPublikacji/text()}"
unread="false"
close=".onItemClose"
authorName="{InfoNotif>IdUzytkownikaSystemu/text()}"
authorPicture="sap-icon://group"
priority="{=${InfoNotif>Przeczytano/text()}==='true' ? 'None' : 'High'}"
>
<buttons>
<Button
text="{=${InfoNotif>Przeczytano/text()}==='true' ? 'Oznacz jako nieprzeczytane' : 'Oznacz jako przeczytane'}"
type="Accept"
app:IdKomunikatuAdmin="{InfoNotif>IdKomunikatu/text()}"
app:IdProcesuAdmin="{InfoNotif>/****/IdKomunikatu/text()}"
app:Przeczytane="{
path: 'InfoNotif>Przeczytano',
mode: 'sap.ui.model.BindingMode.TwoWay',
type: 'sap.ui.model.type.String'
}"
press=".onAcceptInfoPress"
/>
</buttons>
</NotificationListItem>
</List>

结果是:

  • 自定义数据新值设置正确
  • XMLModel中的值未设置
  • 绑定到/Przeczytano/text()的其他控件未更新

我以前没有使用过XMLModel,但我尝试创建一个小样本。

只需修改第一列中的Input或按第二列中的Button即可查看效果。

如果删除text()语句(然后它看起来也更像其他模型,从而更容易用JSON/OData替换它(,那么双向绑定似乎可以工作(更好(。

然后我扩展了这个示例,看看是否可以在JS代码中修改模型。而且(就像普通模型一样(如果您使用setProperty修改模型,并且不尝试直接修改控件,效果最好。

如果使用oBindingContext.getObject(...)访问属性,则必须将text()添加到路径(oContext.getObject("text1/text()")(或从结果中读取textContent(oContext.getObject("text1").textContent(。这也使得用JSON/ODataModel替换它变得更加困难,所以我使用了oModel.getProperty(...)

相关内容

最新更新