2016-10-06 4 views
0

У меня есть сплит-приложение, с левой стороны - основной список с людьми. правая сторона - подробная страница с информацией и элементом RatingIndicator. Два списка на странице сведений, которые связаны через ассоциации:/Мастер/Деталь/Рейтинг.SAPUI5 List CustomListItem/Rerender Issue

Всякий раз, когда я пользуюсь индикатором рейтинга, кажется, что страница перерисовывается, что делает все медленным в конце. Я попробовал как двухстороннюю привязку, так и одностороннюю привязку с ручным обновлением модели. Он по-прежнему перезагружает/перезагружает страницу каждый раз, когда я использую индикатор рейтинга.

Любая идея кого-то?

Библиотека SAPUI5 находится на версии 1.28.31.

Редактировать: В то же время я уменьшил сложность (нет списков в списках, подумал, что это может быть проблемой, но это не так), и все еще проблема возникает. Даже сейчас, когда я использую индикатор «Рейтинг», вся страница «Подробности» перезагружается/редерс. Что мне делать?

Перед нажатием на индикатор Рейтинг: Before Clicking Rating Indicator

Сразу после того, как cliking индикатор рейтинга, правая Detail страница исчезает и вновь появляется жгутов секунд. 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); 

}, 
+0

Нет решения, просто замечание: не рекомендуется использовать сложные элементы управления в качестве содержимого CustomListItem. https://sapui5.hana.ondemand.com/sdk/explored.html#/entity/sap.m.CustomListItem/about – matbtt

+0

получил его, но я не видел никаких параметров. Все элементы из ассоциаций являются динамическими, поэтому я не могу реализовать фиксированный макет ... – zyrex

ответ

0

эта линия

вар sCtxPath = SPATH + "/ RatingValue";

не ведет к другому триггеру события «смены»? Кроме того, есть ли в вашем форматировании петля, которая может вызвать «зависание»?

А как насчет каких-либо событий в вашем хозяине с одним и тем же способом odata?

+0

Я установил точку останова в каждом master/Detail.Controller и никто из них не реагировал. Поэтому я думаю, что это ничего не запустит. Вы упомянули, что строит путь, который я использую в setProperty, что-то вроде этого WorklistSet (key = '1')/RatingValue ->, который правильно обновляет значение в модели odata, а затем происходит рендеринг. Кстати, я отредактировал главный пост, я значительно уменьшил сложность, но проблема все еще существует. – zyrex

+0

Я думаю, что это связано с изменением вашего списка. Это изменение вызывает обновление на вашем пути или, возможно, маршрутизатор, который затем вызывает повторную визуализацию вашей подробной страницы. Возможно, он повторно выбирает элемент списка. Вы можете добавить [event] (https://sapui5.hana.ondemand.com/sdk/#docs/api/symbols/sap.m.ListBase.html#fireSelectionChange) в свой список, чтобы узнать, действительно ли это происходит. Тем не менее, это все равно не решение вашей проблемы. –

+0

Я установил console.log в каждый метод Controller, даже в ListSelector.js, ничего, кроме моего метода onRatingChanged, запускается. также в режиме отладки больше ничего не запускается/запускается. Что вы подразумеваете, добавив событие в свой список? – zyrex