有趣的問題。我認爲最簡單的方法就是在第一次渲染之後拍攝這些值的快照,然後將其用於隨後的重繪。
我們將會把這個成爲postRender
事件創建一個事件處理程序的可重複使用的功能:
function save_first_order() {
var original_value = {}; // 1
return function(chart) {
chart.group().all().forEach(function(kv) { // 2
original_value[kv.key] = kv.value;
});
chart.ordering(function(kv) { // 3
return -original_value[kv.key];
});
};
}
的postRender
事件僅在第一次圖表呈現(畫)後被解僱。此功能
- 保持其自身價值的地圖在封閉:地圖上只能由它應用到
- 圖表的影響,當渲染髮生,它會保留當前 `組中的所有值。所有()在地圖上,並
- 的排序變化功能在地圖中使用的值,而不是當前值
這是假設,當然,沒有新的值出現後來的,但我認爲這是你問題中隱含的假設。
我把它放在了一項功能,它可以重複使用的內部,並將其應用到兩個圖表,像這樣:
rowChart
// ...
.on('postRender', save_first_order());
(請注意,可重複使用的函數被調用,以創建關閉,並返回一個函數,它是實際的事件處理程序)
叉的小提琴:http://jsfiddle.net/gordonwoodhull/04fcvgvu/5/
你肯定是正確的JSF iddle? – davcs86
我不得不做出一些改變才能使其工作。 [http://fiddle.jshell.net/davcs86/ameh3qbt/3/](http://fiddle.jshell.net/davcs86/ameh3qbt/3/) – davcs86
@ davcs86對不起,我已經更新了jsFiddle:d http:/ /fiddle.jshell.net/caravinden/a7jdw5ds/ –