ОК, получил эту работу с помощью обещаний, $ часов, $ таймаута и SetTimeout
О обещаниях: http://andyshora.com/promises-angularjs-explained-as-cartoon.html
О угловом $ часы: How do I use $scope.$watch and $scope.$apply in AngularJS?
Вы можете увидеть это работает вживую здесь: http://vivule.ee/0/print
Вот Зверь, которого я закончил с (проверьте комментарии в коде):
if($routeParams.print){
//Set variable for $watch to listen
$scope.game = null;
//Start script only after angular has changed content in ng-view
$scope.$on('$viewContentLoaded', function(){
//Listen to $scope.game variable change
$scope.$watch('game', function(newVal, oldVal){
//Force angular not to fire script on load
if(newVal != oldVal) {
//Force script to run AFTER ng-repeat has rendered its things to the DOM
$timeout(function(){
//And finally setTimout to wait for browser to render the custom fonts for print preview
setTimeout(function(){
//Print document
window.print();
//window.close();
}, 100);
}, 0);
}
}, true);
});
}
не 100% надежный, хотя, как он может сгореть, прежде чем все директивы оказали – charlietfl
This пожары, когда «нг-вид» имеет загружен. Мне нужно слушать, когда загрузился контент INSIDE ng-view. Это прямо сейчас создает страницу печати без фактического содержимого из таблицы mysql. – yodalr