올바른 방법이나 DOM을 생성하기 위해 지시문에 데이터를 제공하는 각도 방법을 결정하려고합니다. 필자는 jsTree를 사용하여 JSON 데이터를 파일에서 가져 와서 트리를 구성하려고합니다. 문제는 데이터가 도착했지만 사전에 트리가 생성되지 않았을 때 트리를 생성하는 것입니다.(파일 또는 데이터베이스에서) Angular 지시어에 데이터 제공
컨트롤러에서 $watch
을 입력하고 treeData
으로 문제를 해결했습니다. $watch
이 없으면 빈 배열을 입력으로하여 트리가 생성되고 나중에 Angular가 참조를 업데이트하여 데이터를 채 웁니다. 그러나 나무를 처음 만든 다음에 데이터가 변경되지 않으므로 잘못된 방법이라고 생각합니다. 여기
내 코드
app.js입니다 :
var app = angular.module('jsTreeApp', ['ngResource']);
var TestCtrl = function($scope, Data) {
$scope.treeData = Data.getTreeData();
}
app.directive('jstree', function() {
return function(scope, element) {
scope.$watch('treeData.data', function() {
$(element).jstree({
"json_data" : scope.treeData,
"plugins" : [ "themes", "json_data" ]
});
})
}
});
app.factory('Data', function($resource) {
return $resource('/data/treeData.json', {}, {
getTreeData: { method: 'GET', isArray: false }
})
})
index.html을 :이 작업을 수행하는 올바른 방법에 대한
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jsTreeAngular</title>
</head>
<body>
<div ng-controller="TestCtrl" ng-app="jsTreeApp">
<div jstree></div>
</div>
<script src="lib/angular/angular.js"></script>
<script src="lib/angular/angular-resource.js"></script>
<script src="js/app.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="lib/jstree/jquery.jstree.js"></script>
</body>
</html>
어떤 제안?