我有多重选择的问题。我想按类别显示标签,但有一些特定内容:标签可能属于一个或多个类别。
我的问题是针对两个不同类别的标签。怎么处理这个?
这就是我现在所拥有的:
// vm.tagCategories
[
{
"id":1,
"name":"category 1",
"description":"category 1",
"tags":
[
{"id":1,
"name":"tag 1",
"description":"test"
}
]
},
{
"id":3,
"name":"category 2",
"description":"category 2",
"tags":
[
{
"id":1,
"name":"tag 1",
"description":"test"
},
{
"id":2,
"name":"tag 2",
"description":"test 2"
}
]
}
]
<md-input-container class="md-block">
<label>Tags</label>
<md-select ng-model="vm.selectedTags" ng-model-options="{trackBy: '$value.id'}" multiple>
<md-optgroup label="{{currentCategories.name}}" ng-repeat="currentCategories in vm.tagCategories">
<md-option ng-value="{{value}}" ng-repeat="(key, tag) in currentCategories">{{tag.name}}</md-option>
</md-optgroup>
</md-select>
</md-input-container>
当我检查类别1中的标记2时,它在类别2中的标记2被检查但不是第一个。 (如果我检查&#34;标记2&#34;,这就是我所拥有的):
答案 0 :(得分:0)
选项ng-model-options="{trackBy: '$value.id'}"
用于更改 Javascript 检查模型selectedTags
与您选择的不同项目之间的相等性的方式。有了这个,它不是检查它们是否是内存中的相同对象,而是比较它们是否得到相同的id
。但是你的两个项目具有相同的ID,因此只检查了一个(我不知道为什么只检查第二个,而不是第一个或两个)。
所以你只需要删除它:
<md-select ng-model="selectedTags" placeholder="Select an Option" multiple>
<md-optgroup label="{{item.name}}" ng-repeat="item in tagCategories">
<md-option ng-value="value" ng-repeat="(key, value) in item.tags">{{value.name}}</md-option>
</md-optgroup>
</md-select>
Here是你的傻瓜纠正的。