Angularjs 使用angularFire访问ng repeat中的下一个和上一个项目

Angularjs 使用angularFire访问ng repeat中的下一个和上一个项目,angularjs,angularjs-ng-repeat,angularfire,Angularjs,Angularjs Ng Repeat,Angularfire,我正在使用ng repeat和angularFire创建一个项目列表,我需要访问每个列表中的下一个和上一个项目 TLDR 这段代码{{products[$index-1].name}}与angularFire返回的对象不兼容 编辑: 我使用将对象转换为如下数组ng repeat='product in products | orderByPriority | startFrom:startFrom()| limito:pageSize' 我的产品清单看起来像 { "-JBfPahaB9Fo

我正在使用ng repeat和angularFire创建一个项目列表,我需要访问每个列表中的下一个和上一个项目

TLDR

这段代码
{{products[$index-1].name}}
与angularFire返回的对象不兼容

编辑:

我使用将对象转换为如下数组
ng repeat='product in products | orderByPriority | startFrom:startFrom()| limito:pageSize'


我的产品清单看起来像

{
  "-JBfPahaB9FomJej6cyu" : {
    "price" : 400,
    "brand" : "Formica",
    "name" : "Wengue Tabaco",
    "code" : "0406",
    "img" : "0406.jpg"
  },
  "-JBfP0fPcjQi_pAd2mp0" : {
    "price" : 400,
    "brand" : "Formica",
    "name" : "Zebra",
    "code" : "0402",
    "img" : "0402.jpg"
  },
  "-JBfUWmLqWDNH7X0XW09" : {
    "price" : 400,
    "brand" : "Formica",
    "name" : "Perillo Mediterraneo",
    "code" : "0409",
    "img" : "1320.jpg"
  },
  "-JBfUySzDEv32FkSr62t" : {
    "price" : 400,
    "brand" : "Formica",
    "name" : "Peral",
    "code" : "0410",
    "img" : "0410.jpg"
  },
  "-JBfRTaShz2GNAjY9Fd2" : {
    "price" : 400,
    "brand" : "Formica",
    "name" : "Balsa Hindú",
    "code" : "0412",
    "img" : "0412.jpg"
  },

}
我使用的代码与简单javascript数组类似

<div ng-app="test-app" ng-controller="MyController">
    <ul id="contents">
      <li ng-repeat='product in products | orderByPriority | startFrom:startFrom() | limitTo:pageSize'>
          <div class="title">{{$index}} - {{product.name}} </div>
          <div>Prev: {{products[$index - 1].name}}</div>
          <div>Next: {{products[$index + 1].name}}</div>
      </li>
    </ul>
</div>

  • {{$index}}-{{product.name} Prev:{{products[$index-1].name} 下一步:{{products[$index+1].name}
但是尝试使用angularFire返回的对象是无效的

除第一项外,还应参考最后一项,最后一项参考第一项。


我试图制作某种旋转木马,当您在第一个项目中单击“上一步”时,它将转到最后一个项目,当您在最后一个项目中单击“下一步”时,它将转到第一个项目。

我最终将Firebase对象转换为数组,并在ng repeat中使用该数组

在咖啡中:

    $scope.myProducts = []

    $scope.products.$on 'loaded', ->
        $scope.keys = $scope.products.$getIndex()

        for j in $scope.keys
            $scope.myProducts.push $scope.products[j]
并使用:

    data-target="#producto-{{myProducts[$index-1].code || myProducts[myProducts.length-1].code}}"
    data-target="#producto-{{myProducts[$index+1].code || myProducts[0].code}}"
用于下一个/上一个功能


@加藤,谢谢你指出版本的问题

您的第二小提琴(类似代码)使用angularFire 0.3;它已经有一年多的历史了,已经发布了5个版本。调用
orderByPriority
toArray
(您的两个小提琴使用不同API的angularFire版本)不会将
产品
对象转换为数组。它会影响正在迭代的对象/数组,据我所知,您无法从指令范围内直接访问该对象。@Kato您知道如何将products对象转换为控制器中的数组吗?您也可以使用过滤器: