2016-10-07 2 views
0

Итак, я пытаюсь сосредоточить фокус на прокрутке на основе ввода ключа. Для этого я использовал ng-focus, но я, кажется, неправильно понял его цель.AngularJS - Фокусировка на объекте в вложенном прокрутке

Этот JSFiddle показывает, что я сделал до сих пор. Всякий раз, когда найдено совпадение, я устанавливаю значение ng-focus="x._focus" в true, а в журнале консоли это показывает, что это происходит. Но свиток не перемещается, чтобы в фокусе было поле input. Как так?

ответ

1

эй я не очень понимаю, что вы хотите, но проверить это и дайте мне знать, если это то, что вы хотите jsFiddle

function MyCtrl($scope) 
{ 
    $scope.list = [] 

    for(var i = 0; i < 500; i++){ 
     $scope.list.push({ 
     number: i, 
     _focus: false 
     }) 
    } 

    $(document).keypress(function(e) 
    { 
     for(var i = 0; i < $scope.list.length; i++) 
     { 
      if($scope.list[i].number === e.keyCode) 
      { 
       $scope.list[i]._focus = true 
       console.info('found : ', $scope.list[i]) 
       $scope.$apply(); // Apply changes and change the false to true in dom 

       $('#nestedScroll').animate(
       { 
        scrollTop: $("#nestedScroll span[scrollTo='true']").offset().top 
       }, "slow"); 

       return 
      } else { 
       $scope.list[i]._focus = false 
      } 
     } 
    }); 
} 
+0

Несколько. Я обновил вашу скрипку http://jsfiddle.net/wjtz8xhr/13/, чтобы найти элемент, который мы ищем. Одна странная вещь: когда вы делаете это в первый раз, это работает, если вы затем вводите число меньше первого, оно не отображается правильно –

+0

жаль, что я вас не понял, но то, что я дал вам как отлично работает, и вы можете найти предмет, который вы ищете – Diptox

Смежные вопросы