這是一個複雜的情況,但我找到了解決辦法:
我認爲你可以有結構是這樣的:
[{
name: "Group 1",
options: [
{caption: "Option 1", value: "1"},
{caption: "Option 2", value: "2"}
]
}, {
name: "Group 2",
options: [
{caption: "Option 3", value: "3"},
{caption: "Option 4", value: "4"}
]
}
]
但它並不準備選擇組件,因爲我們無法綁定ng-click或標籤,也需要正確的順序。更新選項數組:
[
{
"caption":"Group 1",
"type":"group",
"isActive":true,
"parentGroupSelected":false
},
{
"caption":"Option 1",
"value":"1",
"type":"option",
"parentGroupSelected":false,
"parentGroup":"Group 1"
},
{
"caption":"Option 2",
"value":"2",
"type":"option",
"parentGroupSelected":false,
"parentGroup":"Group 1"},
{
"caption":"Group 2",
"type":"group",
"isActive":true,
"parentGroupSelected":false
},
{
"caption":"Option 3",
"value":"3",
"type":"option",
"parentGroupSelected":true,
"parentGroup":"Group 2"
},
{
"caption":"Option 4",
"value":"4",
"type":"option",
"parentGroupSelected":true,
"parentGroup":"Group 2"
}]
模板(HMTL)
<div data-ng-controller="AppController as vm">
<select data-ng-model="vm.selectModel" data-ng-change="vm.handler(vm.selectModel)">
<option ng-value="item" data-ng-if="vm.checkVisibility(item)" data-ng-repeat="item in vm.optionsInline track by $index" >
<span>{{item.caption}}</span>
</option>
</select>
</div>
我們需要兩個功能:
- 手柄click事件 - 事實上,我們必須把它放在平變化監聽
- 檢查實際選項的可見性
個
JS
能見度檢查功能:
vm.checkVisibility = function(option) {
if(option.type == 'group') {
return true;
}
if(option.type == 'option') {
if(option.parentGroupSelected == true) {
return true;
}
}
return false;
}
的onClick(更改)處理器:
vm.handler = function(option) {
if(option.type == 'group') {
option.isActive = !option.isActive;
vm.optionsInline.forEach(function(optionItem){
optionItem.parentGroupSelected = false; // accordion mode
if(optionItem.type == 'option') {
if(optionItem.parentGroup == option.caption) {
optionItem.parentGroupSelected = option.isActive;
}
}
})
}
}
如果你仍然有你可以參考我的jsfiddle下面的例子
的jsfiddle example問題
你想要做的是已經提供d通過Select2。查看一些示例[這裏](https://select2.github.io/examples.html)。 – Hoa
正如我在其中一條評論中提到的那樣,您想要做的事情會造成糟糕的用戶體驗。創建10個班級,每個班級有20個學生,然後在列表末尾選擇一個學生,你知道我的意思。 – Hoa
@Hora我知道太多的點擊是壞的用戶體驗,但用戶請求它,這就是爲什麼我試圖實施 – Dushyantha