I’m trying to integrate Gridster with AngularJS, but without too much success yet.
Reading the documentation on Angular UI’s ui-jq directive, I get the impression that this (check fiddle) should work. But when I look a bit further with Chrome’s debugger, it turns out that on this line, it doesn’t find any children at all.
I suspect that somewhere in the ng-repeat directive, AngularJS decides to rip out the part that will be repeated, and I see why, but that doesn’t solve my problem. I’d welcome any clue that would help me to get a little further.
Update 1
I started turning it into a directive, hoping that would improve things. However, the nested ng-repeat is also getting in the way in case of a homegrown directive. I tried postponing hooking up the jQuery plugin as long as I could ($evalAsync) and alike, and eventually ended up using a $timeout. That’s the only way in which I could get it working.
Update 2
I think the original approach would have never given me what I needed. So implemented a custom directive. See my answer below.
I eventually ended up writing my own directives for it. I needed to be sure that every change to the underlying data would be seen by gridster, but at the same time, I didn’t want to write my own monitoring on the data model and replace everything you normally do within gridster with a directive that hides all of that. (It would involve implementing most of ng-repeat within the directive itself.)
This is what I have (and assume “foo” to be the name of my module):
With this, I can have a gridster generated view, by adding this:
Whenever items are added to or removed from the collection observed by the ng-repeat directive, they will be automatically added and removed from gridster controlled view.
EDIT
Here is a plunk demonstrating a slightly modified version of this directive: