ng-repeat似乎不起作用

时间:2014-10-06 14:22:38

标签: angularjs ng-repeat europeana-api

我试图从我的数组中提取所有名为'collections'的项目。当我在我的html中输入调用时,我只看到我页面上数组中第一项的完整代码。我试图只引入'edm.preview',这是该项目的图像。我使用的是Angular Firebase和一个名为Europeana的api。我的应用程序允许用户搜索和选择他们喜欢的图像并将其保存到特定用户。

这是js:

  $scope.users = fbutil.syncArray('users');

  $scope.users.currentUser.collections = fbutil.syncArray('collections');
  $scope.addSomething = function (something) {
    var ref = fbutil.ref('users');
    ref.child($rootScope.currentUser.uid).child('collections').push(something);
  }
  $scope.addSomething = function(item) {
      if( newColItem ) {
        // push a message to the end of the array
        $scope.collections.$add(newColItem)
          // display any errors
          .catch(alert);
       }
    };

和html:

<ul id="collections" ng-repeat="item in collections">
  <li ng-repeat="item in collections">{{item.edmPreview}}</li>
</ul>

1 个答案:

答案 0 :(得分:6)

首先,删除外部ng-repeat。您只想将ng-repeat指令添加到正在重复的元素中,在本例中为<li>

其次,从您的AngularJS代码中,您似乎想要遍历users.currentUser.collections而不只是collections

 <ul id="collections">
   <li ng-repeat="item in users.currentUser.collections">{{item.edmPreview}}</li>
</ul>

第三,您在JavaScript代码中定义了两次函数$scope.addSomething。现在,第二个函数定义(顺便提一下,应该更改为更新$scope.users.currentUser.collections)将完全取代第一个。