. В компоненте штриховки TabView на tabChange. Я хочу сделать ajax-вызов для обновления данных bean-компонента в bean-компоненте, который затем должен обрабатываться javascript (некоторые диаграммы) ,JavaScript извлекает данные до того, как завершился вызов события Primefaces AJAX.
Проблема, которую я испытываю, заключается в том, что данные корректно обновляются с моим вызовом ajax, но javascript, который использует данные, извлекается до того, как он был обновлен с помощью ajax-вызова.
Это компонент firstface с ajax-вызовом события tabChange.
<p:tabView>
<p:ajax event="tabChange" listener="#{bean.onTabChange}" />
<p:tab title="Tab 1" id="tab1">
//chart1
</p:tab>
<p:tab title="Tab 2" id="tab2">
//chart2
</p:tab>
<p:tab title="Tab 3" id="tab3">
//chart3
</p:tab>
</p:tabView>
Это JavaScript:
function renderTheChart(tabIndex) {
var categories= [];
var categories= [];
<ui:repeat var="data" value="#{bean.dataList}">
categories[categories.length] = "#{data.id}";
values[values.length] = #{data.value};
</ui:repeat>
renderChart(values, categories, tabIndex);
}
Чтобы знать, когда для вызова JavaScript, чтобы обновить компонент я попробовал на стороне клиента Обратный звонок.
<p:tabView onTabChange="handleTabChange(event, index)">
JavaScript:
function handleTabChange(event, index) {
renderTheChart(index);
}
Все работает хорошо! Спасибо за подсказку с. Это вызывало проблемы, но, как вы упомянули, было решено путем добавления «обновления» в ajax-компоненте! благодаря! –
user373455
@ user373455 Без проблем :) Если вы посмотрите на г-наОтвет на J4mes ниже, он также должен решить проблему с Javascript, и это, по-моему, более чистое решение, поскольку для этого не требуется никакого дополнительного кода Java. –