It seems like the answer was a lot easier than I thought, after digging around for it for quite a while.
I have the following two methods in my controller to confirm location/window change events away from the current location/page
var leavingPageText = "You'll lose your changes if you leave";
window.onbeforeunload = function(){
return leavingPageText;
}
$scope.$on('$locationChangeStart', function(event, next, current) {
if(!confirm(leavingPageText + "\n\nAre you sure you want to leave this page?")) {
event.preventDefault();
}
});
Peter, thanks for your help on this, much appreciated.