在angularJS ui.select中使用“映射对象”;按“跟踪”;
我想使用angular ui的在angularJS ui.select中使用“映射对象”;按“跟踪”;,angularjs,angular-ui,Angularjs,Angular Ui,我想使用angular ui的ui。选择填充多个下拉字段。我希望将选定对象传递给ng模型,并将其映射到我的选项,其中包含相同结构的对象,但不来自同一源: <div ng-repeat="training in trainings"> <form class="form-horizontal" role="form"> <ui-select multiple ng-model="training.skills" theme="select2"
ui。选择
填充多个下拉字段。我希望将选定对象传递给ng模型,并将其映射到我的选项,其中包含相同结构的对象,但不来自同一源:
<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>
“我的技能”
列表(来自ui选择选项)
包含与培训中相同的数据结构。技能”
:
[{"type": "tech",
"name": "C#",
"id": 194},
{"type": "tech",
"name": "Java",
"id": 197},
...]
不幸的是,这不起作用。ui选择清空我的培训.技能
,显示一个空白的选择字段。我知道angularjs无法映射这些对象,如果它们不是源于相同的数组,如中所述。它建议使用跟踪方式
告诉用户界面。选择要用于映射两个对象列表的属性,但如果我将用户界面选择选项行更改为:
<ui-select-choices group-by="skillTypeGrp" repeat="skill.id as skill in skills track by skill.id | filter: $select.search">
没有什么变化。
有没有可能在不使用id替换我的对象的情况下运行此操作,如图所示?如果我没有错,您正在尝试将整个对象与其id进行比较
您是否尝试使用:
<ui-select-choices group-by="skillTypeGrp" repeat="skill in skills | filter: $select.search">
<span>{{skill.name}}</span>
</ui-select-choices>
{{skill.name}
注意,我从repeat中删除了“skill.id”。我认为,通过这种方式,你应该比较对象,希望它能起作用
否则,我将保留ui选择选项,并在ui选择中传递ID数组(所选培训)以匹配列表。当然,这意味着您需要编写更多代码,以便在每次发生更改时更新技能数组
希望有帮助。您需要反转过滤器
和跟踪方式以使其正常工作:
<ui-select-choices group-by="skillTypeGrp" repeat="skill in skills | filter: $select.search track by skill.id">
这看起来很奇怪,但对我来说真的做到了。如果您参考
跟踪依据必须始终是最后一个表达式
因此,如madc所建议,如果您更改为:
<ui-select-choices group-by="skillTypeGrp" repeat="skill in skills | filter: $select.search track by skill.id">
这会奏效的
以下是说明track的文档片段,它是最后一个表达式:
<ui-select-choices group-by="skillTypeGrp" repeat="skill in skills | filter: $select.search track by skill.id">