解决方法
找到解决方案:将自定义指令添加到ui-select元素,该元素在项目列表的底部手动添加.
代码(它包含一些额外的属性和功能,而不是在主题中描述.我按原样发布):
.directive('customOption',function($timeout){ return { restrict: 'A',link: function(scope,el,attrs){ var options = JSON.parse(attrs.customOption); var buttonText = options.buttonText; var func = options.click; var type = options.type; var condition = options.showIf; var template = "<div class='custom-option-container'><button type='button' class='btn btn-primary'><span class='glyphicon glyphicon-plus-sign'></span>" + buttonText + "</button></div>"; //if condition evaluated to true or no condition if(scope.$eval(condition) || !condition){ el.find('li.ui-select-choices-group').append(template); el.find('ul.ui-select-choices').removeAttr('ng-show'); //watch and //remove ng-hide class to display this custom item even if there are no more items scope.$watch(function(){ return el.find('ul.ui-select-choices').hasClass('ng-hide'); },function(newVal){ if(newVal){ $timeout(function() { el.find('ul.ui-select-choices').removeClass('ng-hide'); }); } }); el.find('div.custom-option-container button').bind('click',function(){ scope[func].apply(null,[type]); }) }; } }; })
HTML:
<ui-select ng-model="asset.category" custom-option='{"buttonText": "Add New Category","click" : "showAddModal","type": "category"}'> <ui-select-match>{{ $select.selected.categoryName }} </ui-select-match> <ui-select-choices repeat="category in categories | filter: $select.search"> <span ng-bind-html="category.categoryName | highlight: $select.search"></span> </ui-select-choices> </ui-select>