SAPUI5 TwoWay Binding to XMLModel with button Custom Data 属性 不更新模型

SAPUI5 TwoWay Binding to XMLModel with button Custom Data property not updating model

我在更新 sap.ui.model.xml.XMLModel 的值时遇到了很大的问题。 它由 TwoWay 绑定 到 Button 控件的 XMLModel 和自定义数据 。 在 JS 代码中更新 Custom Data 值不会更新 XMLModel,因此按钮描述、List Item 的优先级等不会改变。 我不知道了,所以请帮助

我更新自定义数据的部分 JS 代码(这是按钮调用的方法)- 这有效:

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

XML 查看:

<List id="notificationList" 
    class="sapContrast sapContrastPlus"
    items="{path: '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,但我尝试创建 a small sample

直接修改第一栏的Input或者按第二栏的Button就可以看到效果了

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

然后我扩展了示例,看看是否可以在 JS 代码中修改模型。并且(就像常规模型一样)如果您使用 setProperty 修改模型并且不要尝试直接修改控件,则效果最佳。

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