【发布时间】:2015-09-28 15:24:06
【问题描述】:
angular.equals({}, myObj) === true 时,简单的 JavaScript 对象为空(= 没有键)。
是否有一些实用功能可以检测$firebaseObject 是否没有键?它永远不会等于{},因为它看起来像这样:
{
$$conf: Object,
$id: "objectId",
$priority: null,
$value: null
}
编辑:当$firebaseObject 没有数据时,我试图隐藏<div>。似乎这样做可以解决问题,但我不知道这是否是正确的解决方案:
<div ng-hide="myObj.$value === null">
[...]
</div>
来自the doc:
如果数据库中的值是原始值(布尔值、字符串或 number) 则该值将存储在此
$value键下。修改 这个值然后调用$save()也会更新服务器的 价值。请注意,只要存在其他键,就会忽略此键。到 将对象更改为原始值,删除其他键并添加 对象的这个键。
[...]
我的$firebaseObject 有这样的孩子:
key: {
value1: 'something',
value2: 'something'
}
当我玩 $value 时,我发现了这个:
- 当
$firebaseObject没有孩子时,$value是null - 当
$firebaseObject有一个孩子时,$value是它的关键 - 当
$firebaseObject有多个子对象时,$value包含所有子对象
问题是,我可以使用$value 这种方式来解决我的问题还是因为...不可能?
【问题讨论】:
-
听起来像是 XY 问题 (meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。您能分享一下您想要完成的工作以及您尝试过的代码吗?
-
对我来说似乎是正确的解决方案。虽然我会选择 ng-show="myObj"
-
@Frank van Puffelen
ng-show="myObj"对我不起作用。请您更详细地解释一下(也许写一个答案)? -
@Frank van Puffelen here 是问题的证明。
标签: angularjs firebase angularfire