は、私はこのエラーを取得し、私が使用jstree libにしてツリーを構築しようとしていること未知RangeError:最大呼び出しスタックサイズを超えました。 jstree
Uncaught RangeError: Maximum call stack size exceeded
解決する方法がわかりません。データは、2つの異なるhttp呼び出しから得られます。 私はこのように私の初期データを取得しています:
$scope.treeFolders = [];
$scope.treeFilters = [];
$scope.tree = [];
var folders = function() {
$http.get("folders.json")
.success(function (res) {
angular.forEach(res, function(parent){
// console.log(parent)
if(!("parent" in parent)){
parent.parent = "#"
}
})
$scope.treeFolders = res
console.log($scope.treeFolders)
});
};
folders();
var filters = function(){
$http.get("child.json")
.success(function (res) {
angular.forEach(res, function(obj){
if(!("parent" in obj)){
// console.log(obj.folderId)
obj.parent = obj.folderId;
}
// console.log(obj)
});
$scope.treeFilters = res;
console.log($scope.treeFilters)
});
};
filters();
にconsole.logは今ではすべてが良いために、配列を返します。その後、私は2つの配列
$scope.load = function(){
// method 1
$scope.tree = $scope.treeFolders.concat($scope.treeFilters);
console.log(JSON.stringify($scope.tree))
// method 2
// $scope.treeFolders.forEach(function(item){
// $scope.tree.push(item)
// })
// $scope.treeFilters.forEach(function(item){
// $scope.tree.push(item)
// })
// console.log(JSON.stringify($scope.tree))
}
だから、あなたが見ることができるように、スーパー配列1に、私も助け二つの方法で1列、両方の作業を取得しようとしましたマージする機能の負荷を使用していると私は、この配列を取得
ロジックjstreeドキュメントによって[{
"id":1,
"userId":1,
"createdDt":"2016-06-27T13:05:03.000+0000",
"text":"folder",
"parent":"#"
},{
"id":2,
"parent":1,
"userId":1,
"createdDt":"2016-06-27T13:26:45.000+0000",
"text":"child folder"
},{
"id":2,
"folderId":2,
"folder":{"id":2,"text":"child folder"},
"body":"empty",
"user":{"id":1,"name":"User 1"},
"userId":1,
"createdDt":"2016-06-27T13:05:47.000+0000",
"text":"filter 1",
"parent":2
},{
"id":3,
"folderId":2,
"folder":{"id":2,"text":"child folder"},
"body":"nothing",
"user":{"id":1,"name":"User 1"},
"userId":1,"createdDt":"2016-06-27T13:00:00.000+0000",
"text":"filter 4",
"parent":2
}]
フォロー、私の木は
* Folder (root)
---- * Child Folder (parent)
---- * Filter 1 (Child)
---- * Filter 4 (Child)
ようになっているはずですが、これに代えて、私はどこかにあまりにも多くのイテレーションでエラーが発生します。誰かが私の間違いを見つけるのを助けることができますか?前もって感謝します。 Plunkerが添付されています
ああ、私はこの問題を抱えています、ありがとう、説明のために多くの..しかし、私はそれを変更すると、それはDBの構造を壊す。たとえば、IDが5のフィルタがあり、IDが5のフォルダがあります。フィルタIDを6に変更しました。次にこのフィルタを削除します。私はAPIにこのフィルタを削除する要求を送信しますが、APIはフィルタIDが6であり、間違ったフィルタを削除していると見なします。 – antonyboom
私はそれに従っているかどうかはまだ分かりませんが、APIやデータソースとは異なる問題のようです。 jsTreeの場合、各ノードで親属性を定義する場合は、アイテムごとに一意のIDを持つ必要があり、親子関係の循環参照は避ける必要があります。 – Adam
フィルターに使用する各項目の属性を指定すると役立ちますか? [JSONソースデータ](https://www.jstree.com/docs/json/)の "li_attr"と "a_attr"を確認してください – Adam