Salesforce: Javascript не хочет пересматривать (проверено chrome)
Я столкнулся с проблемой, которую мне не удалось решить. Действительно, у меня есть JS с переменной apex, и я хочу перерисовать этот блок таким образом, чтобы получить свежие значения обратно. Я использую выходную панель, но, к сожалению, никаких повторных передач не происходит. Мой код как ниже
<apex:commandButton value="button" id="theButton" action="{!setDataSet}" oncomplete="refreshMyChart()" rerender="jstorerender"/>
<apex:outputpanel id="jstorerender">
<script type="text/javascript" >
$j = jQuery.noConflict();
var innerVar = '{!innerString}';
var covVar = '{!coverageAsCategorie}';
console.log("want to refreshINIT"+innerVar+covVar);
</script>
</apex:outputpanel>
Функция обновления моей диаграммы немного сложна, поэтому я поместил ее в другой блок, поскольку не думаю, что это является источником проблемы, потому что повторное отображение должно произойти до завершения:
<script type="text/javascript">
function refreshMyChart(){
console.log("want to refreshINIT2"+innerVar+covVar);
var chart;
var colors = Highcharts.getOptions().colors;
var categories = ['{!coverageAsCategorie}'];
var name = 'Browser brands';
var data = ['{!innerString}'];
function setChart(options) {
chart.series[0].remove(false);
chart.addSeries({
type: options.type,
name: options.name,
data: options.data,
color: options.color || 'white'
}, false);
chart.xAxis[0].setCategories(options.categories, false);
chart.redraw();
};
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
inverted:true
},
title: {
text: 'Browser market share, April, 2011'
},
subtitle: {
text: 'Click the columns to view versions. Click again to view brands.'
},
xAxis: {
categories: categories
},
yAxis: {
title: {
text: 'Total percent market share'
}
},
plotOptions: {
series: {
cursor: 'pointer',
point: {
events: {
click: function() {
var drilldown = this.drilldown;
var options;
if (drilldown) { // drill down
options = {
'name': drilldown.name,
'categories': drilldown.categories,
'data': drilldown.data,
'color': drilldown.color,
'type': 'columnrange',
};
} else { // restore
options = {
'name': name,
'categories': categories,
'data': data,
'type': 'pie'
};
}
setChart(options);
}
}
},
dataLabels: {
enabled: true,
color: colors[0],
style: {
fontWeight: 'bold'
},
formatter: function() {
return this.y +'%';
}
}
}
},
tooltip: {
formatter: function() {
var point = this.point,
s = this.x +':<b>'+ this.y +'% market share</b><br/>';
if (point.drilldown) {
s += 'Click to view '+ point.category +' versions';
} else {
s += 'Click to return to browser brands';
}
return s;
}
},
series: [{
type: 'pie',
name: name,
data: data,
color: 'white'
}],
exporting: {
enabled: false
}
});
};</script>
В любом случае, что произойдет, когда я нажму на кнопку?:
- В моей функции обновления появляется console.log (тогда я предполагаю, что событие oncomplete было запущено)
- Console.log внутри моего блока outputpanel НЕ отображается. Тогда я думаю, что есть проблема с rerender.Plus, что console.log IS отображает информацию при загрузке страницы, поэтому я не думаю, что здесь есть какие-либо проблемы с кодом...
Более того, нет ошибок JS, вызванных. Тогда я действительно не понимаю, почему переименование не хочет работать.
Есть идеи, что здесь происходит?
Спасибо ребята:)
1 ответ
Решение