Angular $document 全局键盘事件不刷新数据.

非常清晰简单的一个小demo 但是.

angular.module('word', [])
.controller('wordCtrl',['$scope','$document',
function ($scope,$document){


$scope.selectNum = 1;

$document.bind("keypress", function(event) {

    if(event.keyCode == 38){
        $scope.selectNum--;
    }

    if(event.keyCode == 40){
        $scope.selectNum++;
    }
    console.log($scope.selectNum);
});

$scope.$watch('selectNum',function (){
    console.log($scope.selectNum);
})

$scope.getNum = function () {
    $scope.$apply();
    alert($scope.selectNum);
}
}])

$wacth 每次 按 小键盘 上下键都可以成功输出 selectNum的值,但是$watch不会a检测到selectNum值的变动视图{{selectNum}}也无变化. 除非调用一次 getNum()  
阅读 10.3k
2 个回答
$document.bind("keypress", function(event) {
    $scope.$apply(function (){
        if(event.keyCode == 38){
            $scope.selectNum--;
        }
        if(event.keyCode == 40){
            $scope.selectNum++;
        }
    })
});

昨天已经解决了. 这里把代码发出来 方便后面遇到这个问题的朋友吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题