2015-10-09 3 views
0

У меня есть директива со следующим кодом:scope.watch наборы наблюдал модель, чтобы «не определено» в Угловое

(function(window, angular, undefined) {'use strict'; 

angular.module('widgets.avatarEditor', []) 

.controller('AvatarEditorController', [ 
    '$scope', 
    '$attrs', 
    '$timeout', 
    function($scope, $attrs, $timeout) { 

    } 
]) 

.directive('avatarEditor', function() { 
    return { 
    restrict: 'E', 
    scope: { 
     originalImage: '=originalImage' 
    }, 
    controller: 'AvatarEditorController', 
    templateUrl: '/config/static/partials/widgets/avatareditor.html', 
    link: function (scope, elm, attr) { 
     scope.watch('originalImage',function (newValue, oldValue, scope) { 
     console.log(newValue); 
     console.log(oldValue); 
     console.log(scope); 
     }); 
    } 
    }; 
}); 

})(window, window.angular); 

директива используется в приложении:

Частичное:

<avatar-editor original-image="currentPicture"></avatar-editor> 

контроллер:

$scope.currentPicture = 'b'; 

$scope.avatars = AvatarsResource.get({}, function() { 
    $scope.currentPicture = 'bar'; 
}); 

Без scope.watch('originalImage',function (newValue, oldValue, scope)... кода все работает отлично, но когда я добавить код часов, вдруг модель «originalImage» не определена.

Strage Дело в том, что событие часы правильно срабатывает.

ли кто-нибудь какие-либо идеи, что может вызвать этот bahavior?

Edit: я нашел что-то странное с параметрами функции слушателя вахты: новое_значение содержит «originalImage» OldValue содержит «Ъ» (реальное старое значение) контекст содержит «бар» (реальное новое значение)

+0

Можете ли вы сделать jsFiddle пример для этого, пожалуйста? Это поможет увидеть, как это происходит в действии. – TwitchBronBron

ответ

0

Хорошо, я чувствую себя глупо, теперь ...

scope.watch('! = scope.$watch('