I have been working on a particular UI scenario, and I'm running up against time barriers to figure out what is going on. I'm hoping someone here can shortcut the process for me, so I don't have to start walking the angular sources or worse :).
The scenario is pretty simple to explain. I have an Angular SPA using angular-route and $location.path to traverse the app flow.
On a given page, however, I want to transition to another route while maintaining an on-going press/drag event. The problem is, when I call $location.path(...) to transition to another route, the press event (and the underlying touch event tracking) gets squashed. The press, pan and underlying touchevents stop firing.
The details:
I am running the lastest version of Angular, angular-route, and the Ryan-Mullins' version of Angular-hammer with hammerjs 2.04 (all the latest, according to bower ;). I'm also running with a few other modules I don't think impact anything--animation, resource... sce (I forget now which module that's in). sanitize I think. Anyway, typical stuff.
The next important detail is that I'm running this setup via Cordova on an Android device.
What I am seeing is, on transition, the touchevent which triggers the press simply "goes away". Which is to say, there is no touchend or touchcancel (unless it's getting hidden from me, for example by Angular). Also no pressup. I had hoped to continue the event by restarting the press with programmatic touch events. That didn't work either. I can get the press to start, but the OS does not generate any on-going touch events.
Now, given the above, I figure this could be a "Cordova problem" relating to how Cordova supports location routing in its hosted WebView (somehow changing Activities, for instance, which will cause Android to reset the touchevent). Alternatively (and seemingly more likely since I would have thought the entire WebView was a single Activity (pretty sure it is), it could be as simple as the Cordova event pass through being one way. So OS triggered events come into the WebView, but javascript triggered events do not go out, and the WebView itself is relying on the OS to continue touch tracking. Implying that my solution would lie in some sort of plugin or patch to Cordova itself to all me to restart touch tracking from Javascript (I haven't done much native Android development, so the costs thereof are a little out of band). Alternatively, the problem may originate (and be solvable) at the Angular/javascript layer. There are enough layers involved that discerning exactly what's going on will likely take longer than I have been given the budget for on this problem, so I'm really just hoping someone has experience doing something similar in Angular and can tell me if I should be looking at the angular layer for a solution.