无法从angularjs中的数组加载数据

时间:2016-03-02 16:10:52

标签: angularjs

我从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);        
}

我收到以下控制台错误:

enter image description here

这是github链接: https://github.com/sfumatostar/ngclassifieds/blob/End_of_Section_7/components/classifieds/classifieds.ctr.js

1 个答案:

答案 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>

代替