SAPUI5列出CustomListItem / Rerender问题

时间:2016-10-06 11:22:35

标签: list binding rendering sapui5

我有一个拆分应用程序,左手边是人员的主人名单。右侧带有info和RatingIndicator元素的详细信息页面。详细信息页面上的两个列表通过关联绑定:/ Master / Detail / Rating。

每当我使用评级指标时,似乎页面正在重新渲染,这使得一切都变得缓慢。我尝试了双向绑定和单向绑定手动更新模型。每次我使用评级指标时,它仍会重新呈现/重新加载页面。

有人在想吗?

SAPUI5库的版本为1.28.31。

编辑:与此同时,我降低了复杂性(列表中没有列表,认为这可能是问题,但它不是),但问题仍然存在。即使现在,当我使用评级指标时,整个详细信息页面会重新加载/重新呈现。 我该怎么办?

点击评分指标前: Before Clicking Rating Indicator

在点击评级指示器后,右侧的详细信息页面会消失并重新出现几秒钟。 right-hand Detail page disappears

查看:

<mvc:View controllerName="split.controller.Detail" xmlns="sap.m"
xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns:footerbar="sap.ushell.ui.footerbar"
xmlns:f="sap.ui.layout.form" xmlns:l="sap.ui.layout">
<Page id="page" navButtonPress="onNavBack" showNavButton="{device>/system/phone}"
    title="{i18n>detailTitle}" busy="{detailView>/busy}"
    busyIndicatorDelay="{detailView>/delay}" class="sapUiResponsiveContentPadding">

    <content>

        <List items="{ path: 'WorklistToDocument' }">

            <CustomListItem>

                <VBox class="sapUiSmallMargin" }">
                    <Title titleStyle="H3" text="{Title}" }" />
                    <Text text="{Description}" }" />
                </VBox>

                <VBox class="sapUiSmallMargin">
                    <Text text="{Description}" />
                    <CheckBox selected="{NotApplicable}" select="onNACheckBoxSelect" />
                    <RatingIndicator value="{RatingValue}" maxValue="{MaxValue}" change="onRatingChanged" />
                    <Text
                        text="{ path: 'RatingValue', formatter: '.formatter.ratingText' }" />
                </VBox>

            </CustomListItem>
        </List>
    </content>

</Page>

控制器:

onRatingChanged: function(oEvent) {

    var oSource = oEvent.getSource();
    var oModel = this.getModel();
    var sPath = oSource.getBindingContext().sPath;
    var sCtxPath = sPath + "/RatingValue";
    var sCtxPathNA = sPath + "/NotApplicable";
    var iValue = oEvent.getParameter("value");

    oModel.setProperty(sCtxPath, iValue);
    oModel.setProperty(sCtxPathNA, false);

},

1 个答案:

答案 0 :(得分:0)

这一行

  

var sCtxPath = sPath +&#34; / RatingValue&#34;;

没有导致另一个&#34;变化&#34;事件触发器? 另外,格式化程序中是否存在可能导致“挂起”的循环?

那么你的主人用相同的odata路径发生的任何事件呢?