2016-09-14 1 views
0

HTMLコード:ノックアウト観測可能アレイの値が更新されたときにjstreeをリフレッシュするにはどうすればよいですか?

<div id="jstree_1"> 
<ul data-bind="foreach: KoObservableArray"> 
    <li data-bind="attr: {type: type}"> 
     <a href="#" data-bind="text: text"></a> 
     <ul data-bind="foreach: children"> 
      <li data-jstree='{"icon":"glyphicon glyphicon-leaf"}' data-bind="attr: {id: id, type: type}"> 
       <a href="#" data-bind="text: text"></a> 
      </li> 
     </ul> 
    </li> 
</ul> 

は、その後、私は以下のコマンドでjstreeを構築します:

$('#jstree_1').jstree({ 
'plugins': ["wholerow", "checkbox"]}); 

すべてが最初の初期化のために正常に動作します。 その後、ノックアウト観測可能配列データ(KoObservableArray)を更新し、新しいデータを反映するためにjstreeをリフレッシュする必要があります。

私が試した:

$('#jstree_1').jstree(true).refresh(); 
$('#jstree_1').jstree("refresh"); 

をしかし、それらのどれも私のために動作しません。助け、私の問題をデモする:(

追加のコード例をアドバイスしてください。 http://jsfiddle.net/mang/pyh9m7de/7/

をchangeMenuをクリックした後、私はJstreeが新しいデータを表現するためにリフレッシュされます期待しています。

答えて

0

使用再描画(真)

リフレッシュは初期状態に戻ります。

+0

に再度追加します。 $( '#jstree_1')。jstree(true).redraw(true); – user3082385

0

は大丈夫、私はこの問題を解決するために管理。

あなたは2つの選択肢があります:

1)あなたのjstreeのデータをリセットし

$('#jstree_1').jstree(true).settings.core.data = self.KoObservableArray(); 
$('#jstree_1').jstree(true).refresh(); 

ChromeとFirefoxで働いて、この方法ではなく、私のIE :(

2)醜いの回避策で - すべてのブラウザで私のために働いています。

私が前にではなく、同様の作業することを試みているHTMLからjstreeを削除し、DOM

var elem = document.getElementById('jstree_1'); 
    elem.parentNode.removeChild(elem); 

    var newElement = $("<div id='jstree_1'><ul data-bind='foreach: KoObservableArray'><li data-bind='attr: {type: type}'><a href='#' data-bind='text: text'></a><ul data-bind='foreach: children'><li data-jstree='{'icon':'glyphicon glyphicon-leaf'}' data-bind='attr: {id: id, type: type}'><a href='#' data-bind='text: text'></a></li></ul></li></ul></div>").appendTo("#jstree_parent"); 
    ko.applyBindings(viewmodel, document.getElementById("jstree_1")); 

    $('#jstree_1').jstree({ 
     'plugins': ["wholerow", "checkbox"] 
    }); 
関連する問題