Angular JS: Chaînes de promesses et cycle de digestion

REMARQUE: le violon utilise une vieille version de Coudé, et qu'il ne fonctionne pas plus parce que de 1,2 Angulaire moteur de template ne gère pas les promesses de manière transparente.

Je suis à la recherche dans le chaînage de promesses pour remplir ma portée, et puis d'avoir le champ mettre à jour automatiquement les dom.

Je suis en cours d'exécution dans des problèmes avec ce si.. Si je l'appelle "puis" déjà résolu promesse, il crée une nouvelle promesse (qui appellera le succès de la fonction de manière asynchrone, mais presque immédiatement). Je pense que le problème est que nous avons déjà laissé l'empreinte de cycle par le temps, le succès de la fonction est appelée, pour les dom jamais mises à jour.

Voici le code:

<div ng-controller="MyCtrl">
    Hello, {{name}}! <br/>
    {{name2}}<br/>
    <button ng-click="go()">Clickme</button><br/>
    {{name3}}
</div>

var myApp = angular.module('myApp',[]);

function MyCtrl($scope, $q) {
    var data = $q.defer();    
    setTimeout(function() {$scope.$apply(data.resolve("Some Data"))}, 2000);
    var p = data.promise;

    $scope.name = p.then(angular.uppercase);
    $scope.name2 = p.then(function(x) { return "Hi "+x;});
    $scope.go = function() {
            $scope.name3 = p.then(function(x) { 
                //uncomment this to make it work:
                //$scope.$apply();
                return "Finally: "+x;
            });
    };
 }

http://jsfiddle.net/QZM4d/

Est-il un moyen de faire ce travail sans faire appel $s'appliquent à chaque fois que j'chaîne promesses?

source d'informationauteur Karen Zilles