私はすでにこの質問を見て、与えられた解決策を試しました(tree.reload()を使用)が、うまくいきません。initAjax() を使用してドキュメントの準備が整った状態で初期化されたツリーがあり、選択入力の変更時に、異なる値を使用してツリーをリロードしようとしています。基本的にこれ:
$(document).ready(function(){
// global variables
var myVal = 'initial value';
// initialize tree
$('#tree').dynatree({
persist: false,
initAjax: {
url: 'getMyStuff.cfc',
data: { myParam: myVal }
},
... more params
)};
// select change handler
$('#mySelect).change(function(){
var tree = $('#tree').dynatree('getTree');
myVal = $(this).find('option:selected').val();
tree.reload();
)};
)};
問題は、ツリーが同じパラメーターでリロードされ続けることです...コンソールのネットワークタブで、送信されるパラメーターが毎回同じであることを確認できます。正しい要素であり、変更時に正しい値を取得しています。
変数のスコープを変更してみました。ダイナツリー オプションを別の変数に配置してみました。呼び出してみました。
$('#tree').children().remove();
$('#tree').dynatree(treeoptions);
change() 関数内で、tree.initialize() を呼び出してみました (はい、コンストラクターであることはわかっています)。tree.redraw() を試しました。reload( を呼び出す前に initAjax オプションを個別に設定してみました)、そして私は立ち往生しています。
何か案は?
この時点で、ツリーの初期化を関数に入れ、select オプションを変更するときに、ツリー (親 div を含む) を吹き飛ばして再構築するしかないと判断しました。新しいデータでツリーを再構築する方法が他にないというのが本当なら、私は驚かれることでしょう。これは、他のウィジェットでの私の経験に反します。