【问题标题】:A orderby object filter for a pure Firebase JavaScript API纯 Firebase JavaScript API 的 orderby 对象过滤器
【发布时间】:2014-02-04 16:44:34
【问题描述】:

我发现angularFire 与纯 Firebase JavaScript API 结合使用时总是让我感到困惑。

假设我不知道如何在 angularFire 中调用 Firebase 数据快照 API ss.name()ss.hasChild(), ss.forEach() 等。

所以我决定单独使用 Firebase JavaScript API,因为我意识到它已经有了与 AngularJS 的双向数据绑定(显式),而无需使用 angularFire。

Demo without ngFire

但我遇到了ng-repeat 的问题。返回的数据是一个对象,所以我无法排序。然后我找到了这个orderByObject过滤器,但是一旦转换为数组,我会丢失对象键。

Firebase 团队能否帮助我改进这个 orderByObject 过滤器以支持对象键?

【问题讨论】:

    标签: angularjs firebase angularfire angularjs-filter


    【解决方案1】:

    您可以使用orderByPriorityfirebase 对象转换为数组,然后应用普通过滤器和orderBy。

     <div ng-repeat="customer in customers | orderByPriority | filter:searchText">
         <span>{{ customer.$id }} </span>
     </div>
    

    【讨论】:

    • 这节省了我的下午。它允许我使用自定义过滤器进行分页。谢谢!
    【解决方案2】:

    查看 orderByPriority 过滤器源代码 - 它将对象转换为按 Firebase 优先级排序的数组:https://github.com/firebase/angularFire/blob/master/angularfire.js#L37

    您可以通过设置特殊的$key 属性将对象的键直接包含在数组中的每个项目中。

    【讨论】:

    • 嗨,Anant,在视图中使用 orderByPriority 没问题,但是如果我想在视图之前/之后处理结果怎么办。就像this
    • 这是在 orderByPriority 应用 $key 和 Anant 之后显示对象的原始键的正确答案!
    猜你喜欢
    • 2021-04-11
    • 2019-01-22
    • 1970-01-01
    • 2018-12-30
    • 2014-06-08
    • 2020-05-29
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多