You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
angularjs-batarang/js/directives/jsonTree.js

48 lines
1.3 KiB
JavaScript

// JSON tree
panelApp.directive('batJsonTree', function($compile) {
return {
restrict: 'E',
terminal: true,
scope: {
val: '=',
//edit: '=',
},
link: function (scope, element, attrs) {
// this is more complicated then it should be
// see: https://github.com/angular/angular.js/issues/898
//var childScope = scope.$new();
var buildDom = function (object) {
var html = '';
if (object == undefined) {
html += 'null';
} else if (object instanceof Array) {
var i;
html += '<div class="scope-branch">['
for (i = 0; i < object.length; i++) {
html += buildDom(object[i]) + ', ';
}
html += ']</div>'
} else if (object instanceof Object) {
for (prop in object) {
if (object.hasOwnProperty(prop)) {
html += '<div class="scope-branch">' + prop + ': ' + buildDom(object[prop]) + '</div>';
}
}
} else {
html += '<span>' + object.toString() + '</span>';
}
return html;
};
scope.$watch('val', function (newVal, oldVal) {
// TODO: clean up scopes
element.html(buildDom(newVal));
//$compile(element.contents())(scope);
});
}
};
});