Angularjs 在Angular指令中的自定义下拉列表中添加搜索过滤器
我想在angularJS的select下拉列表中添加一个搜索过滤器 并使用ng选项列出选项,使用过滤器过滤搜索框中的数据,在搜索框中,您可以通过顺序键入元素名称来选择元素,例如,要从下拉列表中选择埃及,您可以通过在选择下拉列表中键入e+g来实现。在当前下拉列表中,它不允许您键入以进行搜索 以下代码供您参考: 这是自定义下拉列表 这是我的自定义下拉列表: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
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有什么原因吗?据我所知,它几乎完全符合你们想要实现的目标。我还并没有做过打字机的工作,并没有理由也愿意做任何能让它工作的事情。。。