带角度的jQuery键事件

时间:2015-01-13 16:48:37

标签: javascript jquery angularjs keydown

我有一个jquery键事件侦听器,它会查找 Ctrl + C 事件。我的问题在下面评论。

jQuery(window).on('keydown', function(e){

    if(e.ctrlKey && e.which == '67')
    {
        // console.log('pressed'); This works
        // $scope.closeShareBar(); This works
        $scope.showNotif('The URL has been copied to your clipboard', null, true); // This DOES NOT work
    }

});

$scope.showNotif('The URL has been copied to your clipboard', null, true); // This works

为什么不起作用? $scope.showNotif()是我编写的用于显示通知的函数。

修改
我希望我已经明确表示$scope.closeShareBar();在没有$apply()的情况下有效。那为什么只有这个呢?这个角度也不是吗?

编辑2

$scope.showNotif = function(text, status, closeEnabled, quick){
    $scope.notif_text = text;
    $scope.notif = status || 'show';
    if (closeEnabled == true)
    {
        $timeout.cancel($scope.timer);
        $scope.timer = $timeout(function(){
            $scope.notif = '';
        }, 3000);
    }
    if (quick == true)
    {
        $scope.notif = '';
    }
}


$scope.closeShareBar = function(){

    // $scope.shareLink = 'http://localhost:3000/single-signal/'+id;
    angular.element(document.querySelectorAll('.signal_wrapper .signal_data')).removeClass('share_overlay');
    angular.element(document.querySelectorAll('.signal_wrapper .sb_status .share')).removeClass('hide');
    angular.element(document.querySelectorAll('.signal_wrapper .sb_status .close')).addClass('hide');

}

1 个答案:

答案 0 :(得分:0)

任何时候你做一些角度以外的事情,你需要通知它你做了一个改变。所以在你的$ scope.showNotif之后,你需要做一个$ scope。$ apply();

$scope.showNotif(...);
$scope.$apply();