2017-02-21 5 views
0

私はangularjsの初心者です。なぜ私のコンポーネント(fontawesomeアイコン付きの "チェックボックスシミュレーション")がユーザーがスペースキーを押したときにページをスクロールするのかを理解しようとしています。ここng-keypressイベントは、ページを下にスクロールします。

は私のコンポーネントです:

ugoFmk.component('ugoFmkCheck', { 
    bindings: { 
     label: '<', 
     isSelected: '<', 
     isToggleOnKeypress: '<', 
     toggleCheck: '&', 
     checkedClass: '<', 
     uncheckedClass: '<' 
    }, 
    controller: function ugoCheckController() { 
     var vm = this; 

     vm.$onInit = function() { 
      if (vm.isToggleOnKeypress === undefined) 
       vm.isToggleOnKeypress = true; 
      if (vm.checkedClass === undefined) 
       vm.checkedClass = 'fa fa-check-square-o'; 
      if (vm.uncheckedClass === undefined) 
       vm.uncheckedClass = 'fa fa-square-o'; 
     } 
     vm.getCheckboxClass = function() { 
      return vm.isSelected ? vm.checkedClass : vm.uncheckedClass; 
     } 
     vm.runOnKeyPress = function (e) { 
      if (vm.isToggleOnKeypress === false) 
       return; 
      if (e.which === 32) 
       vm.toggleCheck(); 
     } 
    }, 
    template: "<span tabindex='0' ng-keypress='$ctrl.runOnKeyPress($event);' ng-click='$ctrl.toggleCheck()'><i ng-class=\"$ctrl.getCheckboxClass()\"></i> {{$ctrl.label}}</span>" 
}); 

とその利用:

<div class="col-lg-offset-1 col-lg-3" ng-class="{'has-error': vm.hasCiviliteError()}"> 
<div class="input-group input-group-sm"> 
    <span class="input-group-addon" id="spnCivilite">Civilité</span> 
    <div tabindex="0" class="form-control" name="divCivilite" id="divCivilite" ng-focus="vm.makeCiviliteDirty()" ng-blur="vm.makeCiviliteDirty()"> 
     <ugo-fmk-check ng-repeat="opt in vm.civilites" 
         is-selected="opt.selected" 
         toggle-check="vm.selectCivilite(opt.Code)" 
         label="opt.Code" 
         style="margin-right:20px" 
         ng-focus="vm.makeCiviliteDirty(false)" 
         ng-blur="vm.makeCiviliteDirty(true)" 
         ng-class="{'color-placeholder':!opt.selected}"></ugo-fmk-check> 
    </div> 
    <i class="glyphicon glyphicon-remove form-control-feedback" ng-show="vm.hasCiviliteError()"></i> 
</div> 
<div ng-show="vm.hasCiviliteError()" class="text-danger small"> 
    <span>* Cette zone est obligatoire</span> 
</div> 

と結果:ページの最後に enter image description here

答えて

1

スクロールスペースバー付きほとんどのブラウザ/ウェブサイトの標準的な動作です。

ここでは、簡単で簡単な解決策を提案しています:HTML prevent space bar from scrolling page

+0

oh!知りませんでした !私は自分のコードを変更し、keydownイベントを使用し、スペースバーのキーなら、私はイベントをキャンセルします...その作業!!!ありがとう – lolo

関連する問題