webpolis / angular-treecursive Goto Github PK
View Code? Open in Web Editor NEWCustomizable recursive tree for Angular
License: MIT License
Customizable recursive tree for Angular
License: MIT License
It loads all well, but expanding doesn't work with the newer version (didn't test on older versions).
Example: http://jsfiddle.net/TL6aa/
Will be great to enable the user customize the name of the property that holds the node's childrens. So, instead of forcing the user set a children array, this enhancement doesn't force users to modify their current setup (API, etc).
When the tree loads it should be possible to configure if the tree is collapsed or not.
What do you think @webpolis ?
This way I can work on an issue without creating pull requests and creating double issues?
Not showing the results properly-
Hi,
We've decided to depend upon your tree control for our project. It's simple, it's flexible, it's angular style, and it does exactly what it says on the tin, no bloat attached :)
However, due to the structure of our data, we need to make use of the "children" attribute. This is on the master but it's currently not included in the bower release. Our current workaround is to link directly to a github project SHA ("angular-treecursive": "https://github.com/webpolis/angular-treecursive.git#21186ec728847b6a8385d9330295e938d01909ef" in bower.json) but we'd prefer to be able to refer to the dependency in a more standard bower manner.
Thanks in advance,
/Martin
I've only tested the following with ng-click but I suspect that the bug would extend to wide range of event types. In any case, if I define an event listener upon a child element of the treecursive directive, the listener will fire twice. The only exception is for ng-click on the topmost element, due to a patch in the code (angular.element(clone[1]).attr('ng-click', false);
in the clone function).
The problem seems to be that the elements are compiled twice; both when they are created and when a treecursive element has been added to expand to a child list. As a result, event listeners are registerd twice.
As far as I can tell, it's just a matter of compiling the nested treecursive element without recompiling the stuff which was already compiled. I.e. replace
$compile($element.contents())($scope);
by
$compile(sub[0])($scope);
and everything appears to work. The ng-click patch can then be removed.
If you'd like a PR then I can create easily create one, but it's just a couple of lines.
Error: transclude is not a function
http://jsfiddle.net/35QRL/1/
Hi,
It seems there is some transclude magic fix, that is needed :).
look at this
http://jsfiddle.net/nu7f9srq/1/
I have two instances of the treecursive and they are suppose to use different templates for childeren, but one seems to be picking the template from the last one.
Regards
Aman
Hi,
In our project, we are occasionally faced with having to render trees based upon very large data structures. It's an implicit requirement that these do not drag down the UI. I've experimented a bit with treecursive and large generated data sets, and above a couple thousand items the performance begins to degrade noticely (on a pretty fast MacBook). Above about 10K items it seems to kill the browser.
I have a fix, though. Replacing the ng-show="!node.collapsed" in the code by a ng-if="!node.collapsed" will cause the tree to build itself lazily instead of building itself initially and then hiding collapsed branches. This will only work if nodes are initially collapsed, i.e. for an initially expanded tree it would not be expected to make any positive difference.
I've forked the repository and expect to make the change in a non-obtrusive manner, i.e. it will use ng-show as default and ng-if if you actively specify so in an attribute. Having done so, I'd be happy to make a pull request, if you are interested.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.