AngularJS: Portée parent non mise à jour dans la directive (avec portée isolée) Liaison bidirectionnelle

J'ai le code suivant, qui peut également être tripoté sur http://jsfiddle.net/garukun/u69PT/.

Vue:

<div data-ng-app="testApp">
    <div data-ng-controller="testCtrl">
        <strong>{{pkey}}</strong>
        <span data-test-directive data-parent-item="pkey" 
            data-parent-update="update(pkey)"></span>
    </div>
</div>

JS:

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

testApp.directive('testDirective', function ($timeout) {
    return {
        scope: {
            key: '=parentItem',
            parentUpdate: '&'
        },
        replace: true,
        template: '<div><p>{{key}}</p>' +
            '<button data-ng-click="lock()">Lock</button>' +
            '</div>',
        controller: function ($scope, $element, $attrs) {
            $scope.lock = function () {
                $scope.key = 'D+' + $scope.key;
                console.log('DIR :', $scope.key);

                //Expecting $scope.$parent.pkey to have also been
                //updated before invoking the next line.
                $scope.parentUpdate();
                //$timeout($scope.parentUpdate); //would work.
            };
        }
    };
});

testApp.controller('testCtrl', function ($scope) {
    $scope.pkey = 'golden';
    $scope.update = function (k) {
        //Expecting local variable k, or $scope.pkey to have been
        //updated by calls in the directive's scope.
        console.log('CTRL:', $scope.pkey, k);
        $scope.pkey = 'C+' + k;
        console.log('CTRL:', $scope.pkey);
    };
});

En gros, je suis la mise en place de la directive isolé application, dans lequel je suis les deux sens de la liaison d'une propriété (clé) de la portée parent (pkey), et également de déléguer une méthode (parentUpdate) à être appelée dans le contexte de la portée parent.

Maintenant, au cours d'une ng-cliquez sur gestionnaire d'événement dans la directive, je voudrais invoquer la parentUpdate méthode et de faire quelque chose à l'intérieur. Quand je suis en invoquant la méthode, je m'attends à ce que mes parent champ d'application du modèle ont été mis à jour. Mais en réalité, il n'est pas, et c'est ce qui est déroutant pour moi.

C'est probablement à cause de manque des $digest cycles dans le milieu, depuis l'emballage de la parentUpdate appel à $timeout ne fonctionnent pas comme prévu.

Quelqu'un pourrait jeter quelque lumière sur ce qu'il manque? Ou comment correctement invoqué parentUpdate?

source d'informationauteur Steve