Угловая сфера не обязательна
У меня есть такой шаблон:
<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
будет более безопасный способ запуска кода.