Angularjs 在Angular指令中的自定义下拉列表中添加搜索过滤器

Angularjs 在Angular指令中的自定义下拉列表中添加搜索过滤器,angularjs,drop-down-menu,angularjs-directive,Angularjs,Drop Down Menu,Angularjs Directive,我想在angularJS的select下拉列表中添加一个搜索过滤器 并使用ng选项列出选项,使用过滤器过滤搜索框中的数据,在搜索框中,您可以通过顺序键入元素名称来选择元素,例如,要从下拉列表中选择埃及,您可以通过在选择下拉列表中键入e+g来实现。在当前下拉列表中,它不允许您键入以进行搜索 以下代码供您参考: 这是自定义下拉列表 这是我的自定义下拉列表: userApp.directive('ngDropdown', function($parse, $timeout, $interpola

我想在angularJS的select下拉列表中添加一个搜索过滤器

并使用ng选项列出选项,使用过滤器过滤搜索框中的数据,在搜索框中,您可以通过顺序键入元素名称来选择元素,例如,要从下拉列表中选择埃及,您可以通过在选择下拉列表中键入e+g来实现。在当前下拉列表中,它不允许您键入以进行搜索

以下代码供您参考:

这是自定义下拉列表

这是我的自定义下拉列表:

userApp.directive('ngDropdown',

  function($parse, $timeout, $interpolate) {

    return {
      restrict: 'AC',
      controller: function($scope) {

        $scope.dropdown = null;
      },
      link: function(scope, elem, attrs, ctlr) {

        var button = $('<div class="btn-group">' +
          '<button type="button" class="btn btn-white dropdown-label" data-toggle="dropdown">Select...</button>' +
          '<button type="button" class="btn btn-white dropdown-toggle" data-toggle="dropdown">' +
          '<i class="fa fa-angle-down"></i>' +
          '<span class="sr-only">Toggle Dropdown</span>' +
          '</button>' +
          '<ul class="dropdown-menu fx-slidedown" role="menu"></ul>' +
          '</div>');

        var menu = $(".dropdown-menu", button),
          label = $(".dropdown-label", button);

        menu.css({
          height: 'auto',
          maxHeight: 300,
          overflowX: 'hidden',
          overflowY: 'auto'
        });

        elem.hide();
        elem.after(button);

        //var size = button.parent().width();
        button.find('button').eq(0).css({
          maxWidth: '82.5%',
          textAlign: 'left'
        });

        elem
          .on("focus", function() {
            button.dropdown('toggle');
          });

        if (attrs.ngModel) {

          scope.$watch(attrs.ngModel, function(value) {
            if (typeof value != 'undefined') {
              ctlr.select(value);
            } else {
              label.html('Select...');
              elem.val(null);
            }
          });

        };

        ctlr.update = function(value) {
          $timeout(function() {
            scope.$apply(attrs.ngModel + '="' + value + '"');
          }, 0);
        };

        ctlr.select = function(value) {

          ctlr.selected = value;
          elem.val(value);
          label.html(elem.find('option:selected', elem).html());
        };

        ctlr.add = function(option) {
          menu.append(option);
        };

        ctlr.remove = function(option, value) {
          if (elem.val() == value) {
            label.html('Select...');
          }
          option.remove();
        };
      }
    };
  });
userApp.directive('ngDropdown',
函数($parse、$timeout、$interpolate){
返回{
限制:“AC”,
控制器:功能($scope){
$scope.dropdown=null;
},
链接:功能(范围、元素、属性、ctlr){
变量按钮=$(“”+
“选择…”+
'' +
'' +
“切换下拉列表”+
'' +
“
    ”+ ''); 变量菜单=$(“.dropdown menu”,按钮), 标签=$(“下拉标签”,按钮); menu.css({ 高度:“自动”, 最大高度:300, 溢出x:'隐藏', 溢出:“自动” }); 隐藏元素(); 元素后(按钮); //var size=button.parent().width(); button.find('button').eq(0).css({ maxWidth:'82.5%', textAlign:'左' }); 元素 .on(“焦点”,函数(){ 按钮下拉列表(“切换”); }); if(attrs.ngModel){ 范围$watch(attrs.ngModel,函数(值){ if(值的类型!=“未定义”){ 控制选择(值); }否则{ html('Select…'); 元素值(空); } }); }; ctlr.update=函数(值){ $timeout(函数(){ 作用域.$apply(attrs.ngModel+'=“'+value+'”); }, 0); }; ctlr.select=函数(值){ ctlr.selected=值; 元素值(值); html(elem.find('option:selected',elem.html()); }; ctlr.add=函数(选项){ 菜单。附加(选项); }; ctlr.remove=函数(选项,值){ if(elem.val()==值){ html('Select…'); } option.remove(); }; } }; });
    您不只是使用typeahead有什么原因吗?据我所知,它几乎完全符合你们想要实现的目标。我还并没有做过打字机的工作,并没有理由也愿意做任何能让它工作的事情。。。