【问题标题】:When iterating through a list of items in AngularFire, how do I get the ID of each item? [duplicate]遍历 AngularFire 中的项目列表时,如何获取每个项目的 ID? [复制]
【发布时间】:2014-04-12 05:42:08
【问题描述】:

控制器:

...

$scope.items = ItemService; // This is injected correctly, no problem here.

...

HTML:

<div ng-repeat="item in items">
  <a ng-href="#/items/{{ item.id }}">{{ item.name }}</a>
</div>

我的问题是...如果我使用 .$add()(Firebase 的 .push())添加项目,我不知道如何获取自动生成的 ID...

有什么想法吗?

【问题讨论】:

    标签: javascript angularjs firebase angularfire


    【解决方案1】:

    事实证明,您可以遍历 (key, value),这可以解决问题:

    HTML:

    <div ng-repeat="(id, item) in items">
      <a ng-href="#/items/{{ id }}">{{ item.name }}</a>
    </div>
    

    【讨论】:

      【解决方案2】:

      除了迭代键/值之外,$firebase 中的每条记录(假设它不是原始值)都会将键附加为$id

      <div ng-repeat="item in items">
        <a ng-href="#/items/{{ item.$id }}">{{ item.name }}</a>
      </div>
      

      【讨论】:

      • 这是我希望存在的答案——只是试了一下,我没有看到$id属性有任何返回:(
      【解决方案3】:

      这个问题在这里得到解答:https://stackoverflow.com/a/21996544/975669

      答案:

      angularFire $add 方法返回一个 Promise,它在解析后将包含一个 Firebase 对您新推送的值的引用。使用该值,您可以获得 UID。

      $scope.tests.$add({
        ...your object....
      }).then(function(ref) { 
      
          //this is your id
          var id = ref.name(); 
        });
      

      【讨论】:

      • 即使我只是检索对象,这仍然有效吗? (即当时不新建,只读取已有的)
      • 不,这只是在添加新对象时读取服务器的响应。 Firebase 以新列表项的 ID 进行响应。
      猜你喜欢
      • 2013-09-22
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多