1

ツリー構造にエリアパスをロードしようとしている JQ ツリーがあります。

私はLoadTree()から呼び出されたメソッドを持ってdocument.readyおり、このメソッドはオブジェクトのリストを取得する ajax 呼び出しを行います (のようなプロパティを持つDisplayName)。

結果データをループすることで、バインドしたいデータ文字列を作成しています。ただし、データをバインドすると、データが適切にレンダリングされず、すべてのデータが 1 行に 1 文字レンダリングされます。

この画像を参照してください:

ここに画像の説明を入力

function LoadTree() {
    var jsonData = '[';
    //var finalData = "";
    $.ajax({
        type: "POST",
        url: "@this.FullyQualified("/Metrics/LoadAreaPaths")",
        async: false,
        dataType: "json",
        success: function (resultData) {

            for (var i = 0; i < resultData.TreeViewModels.length; i++) {
                jsonData += '{ label:' + "'" + 
                    resultData.TreeViewModels[i].DisplayName + "'" + ',';
                //children
                jsonData += 'children: [{ label: ' + "'" + 'child3' +"'"+ '}]'
                //last bracket
                jsonData += '},'
            }
            jsonData += '];';
            //finalData = jQuery.parseJSON(resultData);
        }
        //debugger;

    });

    $('#tree1').tree({
        data: jsonData
    });

}

どんな助けでも大歓迎です。

4

2 に答える 2

0

あなたが構築しているデータは間違っています。成功コールバック内に記述されたコードの代わりに以下を使用してください。開始せずに配列を[作成しています。したがって、文字列を配列として反復しようとしているため、各文字を配列項目と見なします。これにより、文字ごとに新しい行が取得されます。そして、それは配列を構築するための良い解決策ではありません.

 var jsonData = [], src = resultData.TreeViewModels;
 for (var i = 0, l = src.length; i < l; i += 1) {
     jsonData.push({
       label: resultData.TreeViewModels[i].DisplayName,
       children: [{
          label: "child3"
       }]
      });
  }
  $('#tree1').tree({
      data: jsonData 
  });
于 2013-10-09T20:19:12.120 に答える