我从ng-repeats dupes错误中得到静态。我试过'追踪$ index'无济于事。
以下是我的JSON:
{
"expression": "mithrandir",
"meaning": "language of the Elves",
"example": "",
"pronunciation": "",
"notes": "",
"meta": {
"book": "There and back again",
"author": "Frodo Baggins",
"tags": ["middle earth", "elves"]
}
}
我希望在下拉列表中填充唯一标记。模板如下:
<md-input-container>
<label>Tags</label>
<md-select ng-model="tag">
<md-option ng-repeat="tag in tags" value="{{ tag }}">
{{ tag }}
</md-option>
</md-select>
</md-input-container>
以下是控制器中的代码:
classifiedsFactory.getClassifieds().then(function(classifieds) {
$scope.classifieds = classifieds.data;
$scope.tags = getTags($scope.classifieds); // call the getTags method below
// console.log($scope.tags)
});
function getTags(classifieds) {
var tags = [];
angular.forEach(classifieds, function(item) {
angular.forEach(item.meta.tags, function(tag) {
tags.push(tag);
});
});
// console.log(_.uniq(tags))
return _.uniq(tags);
}
我收到以下控制台错误:
这是github链接: https://github.com/sfumatostar/ngclassifieds/blob/End_of_Section_7/components/classifieds/classifieds.ctr.js
答案 0 :(得分:0)
第一个错误可能意味着至少有一个
项 angular.forEach(classifieds, function(item) {
angular.forEach(item.meta.tags, function(tag) {
tags.push(tag);
});
});
没有元字段。 因此item.meta是未定义的,因此item.meta.tags导致&#34;无法读取未定义的属性标签&#34;
第二个和第三个错误实际上确切地说明问题是什么以及如何处理它。 只需使用
<md-option ng-repeat="tag in tags track by $index" value="{{ tag }}">
{{ tag }}
</md-option>
代替