Угловая сфера не обязательна

У меня есть такой шаблон:

    <div class="modal top am-fade-and-slide-top" tabindex="-1" role="dialog"
 style="display: block;" ng-init="bindHide($hide)">

displaying something here....
</div>

А в контроллере это выглядит так:

angular.module('coreApp').controller('incomingCallController',['$scope','$rootScope','$http','$ocLazyLoad','$modal',function($scope,$rootScope,$http,$lazyLoad,$modal){
    var session = $rootScope.videoSession;
    //$rootScope.videoSession.accept();

    $scope.callerData =
    {
        'username': $rootScope.videoSession.request.getHeader('userName'),
        'profileimage':  $rootScope.videoSession.request.getHeader('profileImage')
    }
    $scope.rejectCall = function(){
        session.reject();
    }

    session.on('cancel',function(){
        $scope.hideModal(); //-----------Doesn't work here
    });

    $scope.bindHide = function(hideModal){
        $scope.hideModal = hideModal;

        //$scope.hideModal() ---- works fine here  
    }
}])

Привязка не работает в обратном вызове. Почему так?

1 ответ

Вам необходимо применить цикл дайджеста вручную, чтобы обновить привязки, потому что вы вызываете угловой код из вне углового контекста.

Код

session.on('cancel',function(){
    $scope.$apply(function(){
        $scope.hideModal();
    })
});

Скорее чем выше $timeout будет более безопасный способ запуска кода.

Другие вопросы по тегам