将重点放在动态列表上(Angularjs方式)

时间:2017-07-18 21:41:12

标签: javascript angularjs angularjs-directive

当用户按'/'时,我输入了'validaTag'的更改值(如Instagram上的#)。

我希望将焦点设置在此列表的第一个元素上,并在输入时模糊。

模型                         

                        <input type="text"  name="myAddress" ng-enter="chatCtrl.sendMsg(chatCtrl[tab]); chatCtrl[tab]=''; " ng-click="chatCtrl.getChatTab(tab);" ng-model="chatCtrl[tab]" class="input-chat" style="width: 95%" ng-change="checkkey(chatCtrl[tab])" >

                        <div ng-hide="!validaTag">
                            <ul class="list-group tags_chat">
                                <li class="list-group-item" ng-click="enviarTexto(tag.descricao, tab)" ng-repeat="tag in alltags | filter:hashtag:strict | limitTo : 3" setFocus="$last">
                                    <b >{{tag.tag}}</b> -
                                    {{tag.descricao}}
                                </li>
                            </ul>
                        </div>


                    </div>

控制器

  $scope.checkkey = function (text) {
    $scope.hashtag = '';
    $scope.alltags = '';
    $scope.frase = '';

    $scope.validaTag = text.includes('/');
    $scope.frase = text.substr(0, text.indexOf('/'));

    if($scope.validaTag == true){
      $scope.hashtag = text.substring(text.indexOf("/"))
      $.ajax({url:'blablabla',
      async: !1,
      type: "GET"
    }).done(function(response) {
            response = evalJson(response);
            $scope.alltags = response;
            $scope.alltags = $.map($scope.alltags, function(value, index) {
            return [value];
          });
        })
      }
  }

1 个答案:

答案 0 :(得分:0)

如果您显示的模板是指令模板,并且如果您在指令中只出现一次,那么这样的事情应该可以解决这个问题

angular.element(element.find('li')[0]).focus();

如果这不起作用,您可能需要为此实现自己的指令。