2015-09-09 2 views
1

У меня есть шаблон, как это:Угловая область видимости не является обязательным

<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 
    } 
}]) 

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

ответ

3

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

Код

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

Вместо выше $timeout будет более безопасным способом для запуска кода.

Смежные вопросы