我有一个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');
}
答案 0 :(得分:0)
任何时候你做一些角度以外的事情,你需要通知它你做了一个改变。所以在你的$ scope.showNotif之后,你需要做一个$ scope。$ apply();
$scope.showNotif(...);
$scope.$apply();