gpt4 book ai didi

angularjs - 使用 "track by"在angularJS ui.select中映射对象

转载 作者:行者123 更新时间:2023-12-04 04:34:51 25 4
gpt4 key购买 nike

我想使用angular-ui的 ui.select 来填充multiple dropdown field。我想将选定的对象传递给ng-model并将其映射到我的选项,其中包含具有相同结构但不来自同一来源的对象:

<div ng-repeat="training in trainings">
<form class="form-horizontal" role="form">
<ui-select multiple ng-model="training.skills" theme="select2" ng-disabled="disabled">
<ui-select-match placeholder="Wähle Skills...">{{$item.name}}</ui-select-match>
<ui-select-choices group-by="skillTypeGrp" repeat="skill.id as skill in skills | filter: $select.search">
<span>{{skill.name}}</span>
</ui-select-choices>
</ui-select>
</form>
</div>

带有示例培训的 trainings中的 ng-repeat列表如下所示:
[{"description": "",
"skills": [{"type": "tech",
"name": "C",
"id": 194}],
"id": 1,
"name": "Test"}]

我来自 skillsui-select-choices列表包含与 training.skills中相同的数据结构:
[{"type": "tech",
"name": "C#",
"id": 194},
{"type": "tech",
"name": "Java",
"id": 197},
...]

不幸的是,这是行不通的。 ui-select清空我的 training.skills,向我显示一个空白的选择字段。我知道angularjs无法映射那些对象,如果它们不是源自同一数组,如 this blogpost中所述。它建议使用 track by 来告诉 ui.select使用哪个属性来映射两个对象列表,但是如果我将 ui-select-choices行更改为:
<ui-select-choices group-by="skillTypeGrp" repeat="skill.id as skill in skills track by skill.id | filter: $select.search"> 

没有什么变化。
是否有可能在不使用 single property binding example建议的ID替换我的对象的情况下运行此程序?

最佳答案

您需要反转filtertrack by才能使其工作:

 <ui-select-choices group-by="skillTypeGrp" repeat="skill in skills | filter: $select.search track by skill.id">

看起来很奇怪,但是对我有用。

关于angularjs - 使用 "track by"在angularJS ui.select中映射对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27123757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com