【问题标题】:When to use $firebaseObject in place of $firebaseArray何时使用 $firebaseObject 代替 $firebaseArray
【发布时间】:2016-04-20 05:54:43
【问题描述】:

我正在为我的项目使用 angularfire,并且遇到了 $firebaseObject 的以下限制:

  1. orderByfilter 不要对它们工作
  2. 我无法直接将它们作为 js 文件中的对象进行操作

有什么是$firebaseArray 不能做但$firebaseObject 可以做的吗?

【问题讨论】:

  • 当你有一个对象时你应该使用$firebaseObject,当你有一个对象列表时你应该使用$firebaseArray。如果没有看到您的代码,就不可能说出您遇到的是哪种情况。
  • 为什么要盲目使用 firebaseObject 而不是 firebaseArray ?是否有理由(性能,功能......)使其成为 Array 的可行选择?如果您查询一个数组并且只有一个结果,它将返回一个长度为 1 的数组,如果没有则返回 0。另一方面,如果您查询一个对象并找到一个,那么您会得到您的对象,但如果您找不到你必须看的 oor $value === null 这比长度更不实用。

标签: firebase angularfire


【解决方案1】:

这是来自 firebase 的文档。 https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebasearray

如果要对对象进行排序,请将它们视为数组。请参阅here 的解决方案。

app.filter('toArray', function() { return function(obj) {
    if (!(obj instanceof Object)) return obj;
    return _.map(obj, function(val, key) {
        return Object.defineProperty(val, '$key', {__proto__: null, value: key});
    });
}});

示例标记:

<div ng-repeat="val in object | toArray | orderBy:'priority' | filter:fieldSearch">
  {{val.$key}} : {{val}} 
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-16
    • 2017-08-14
    • 2015-12-09
    • 2016-11-25
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多