2014-10-08 79 views
5

我正在查找允许用户在层次结构中查看下拉列表中的元素的指令。 SELECT标签支持。但是这只允许2个级别。我想展示大约5个关卡。例如,
亚洲
---日本
------东京
------冲绳
嵌套的SELECT选项

用户将能够在任何级别的选择项目。

用户将能够选择亚洲或日本或东京。所有这些选项都会显示在一个下拉列表中。我不是在寻找一个层叠选择,你首先选择大陆,然后选择国家,然后选择城市。

有没有这个角度指令?

谢谢
佳日

+0

http://stackoverflow.com/questions/18723399/angularjs-cascading-select-dropdowns - 这就是所谓的级联选择 – SoluableNonagon 2014-10-08 16:28:59

+0

我工作过类似的指令,你真正想要的是“级联选择”。这是我想出的一个:http://plnkr.co/edit/AnkWlneZCuKe39mafCsn?p=preview – SoluableNonagon 2014-10-08 16:29:34

+0

用户将能够选择亚洲或日本或东京。所有这些选项都会显示在一个下拉列表中。我不是在寻找一个层叠选择,你首先选择大陆,然后选择国家,然后选择城市。 – Yash 2014-10-09 05:08:10

回答

7

你为什么不只是做一个简单的AngularJS引导UI-Select,并给出了选项根据自己的层次结构中的CSS类,并编辑CSS类,以符合您的喜好。

分叉的UI - 选择Plunker和编辑它满足您的要求,

HTML:

<ui-select ng-model="country.selected" theme="selectize" ng-disabled="disabled" style="width: 300px;"> 
    <ui-select-match placeholder="Select or search a country in the list...">{{$select.selected.name}}</ui-select-match> 
    <ui-select-choices repeat="country in countries | filter: $select.search" > 
     <span ng-bind-html="country.name | highlight: $select.search" ng-class="country.css_class"></span> 
    </ui-select-choices> 
    </ui-select> 

的Javascript:

$scope.countries = [ // Taken from https://gist.github.com/unceus/6501985 
    {name: 'Asia', code: 'AS', css_class: 'hierarchy1'}, 
    {name: 'Japan', code: 'JP', css_class: 'hierarchy2'}, 
    {name: 'Tokyo', code: 'JP-TK', css_class: 'hierarchy3'}, 
    {name: 'Okinawa', code: 'JP-OK', css_class: 'hierarchy3'}, 
    {name: 'India', code: 'IN', css_class: 'hierarchy2'}, 
    {name: 'Mumbai', code: 'IN-MU', css_class: 'hierarchy3'}, 
    {name: 'Kolkata', code: 'IN-KL', css_class: 'hierarchy3'}, 
    {name: 'Europe', code: 'AS', css_class: 'hierarchy1'}, 
    {name: 'Germany', code: 'JP', css_class: 'hierarchy2'}, 
    {name: 'Berlin', code: 'JP-TK', css_class: 'hierarchy3'} 
    ]; 

CSS:

/*Custom hierarchial classes*/ 

.hierarchy1{ 
    background:#bbb; 
    color:red; 
} 

.hierarchy2{ 
    background:#ddd; 
    color:blue; 
    margin-left:5px; 
} 

.hierarchy3{ 
    background:#fff; 
    color:green; 
    margin-left:10px; 
} 

参考:http://plnkr.co/edit/AYIS4Pv781ubB2mpzbCQ?p=preview

+1

这实际上是一个非常好的方法。不幸的是,如果您输入搜索搜索文本,则只会显示与过滤器文本匹配的项目,这使得无法确定某个特定项目属于哪个父项。实际的分层选择通常显示过滤项目的所有祖先。 – Ole 2015-01-26 15:42:17

+0

@Ole我们可以做到这一点,将不得不修改国家数组添加一个属性'父'来提及该项目的父项,并创建一个自定义过滤函数来相应地过滤父项 – 2015-01-27 16:53:24