Hello, I also use isotope in an angularjs project.
Basically need to wait for angular to finish updating the dom and then apply the isotope plugin to the container. What is happening in your code is that isotope is running before angular updates the dom so when isotope runs there is no dom content to run it on so you don't see anything.
There could be other ways you could do this if you had some variable to $watch on, but in this case I don't think thats doable. There is more detail about what you want to do here:
https://github.com/angular/angular.js/issues/734. Thats a bit outdated but reading that it seems like the only thing you can do is $timeout because you can never really know when angular is done updating the dom.
Then again I might be totally wrong and there might be some zen way of doing what you want, if anyone else know a better way than using $timeout please let us know. But for now I guess the zen way is just to use $timeout :)