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

绑定在回调中不起作用。为什么这样?

4

1 回答 1

3

您需要手动应用摘要循环来更新绑定,因为您是从角度上下文之外调用角度代码。

代码

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

而不是上面$timeout会更安全的方式来运行代码。

于 2015-09-09T22:49:36.523 回答