angular.equals({}, myObj) === true
时,简单JavaScript对象为空(=没有键)。
是否有一些实用功能可以检测$firebaseObject
是否没有密钥?它永远不会等于{}
,因为它看起来像这样:
{
$$conf: Object,
$id: "objectId",
$priority: null,
$value: null
}
编辑:我在<div>
没有数据时试图隐藏$firebaseObject
。看起来好像这样做但我不知道它是否是正确的解决方案:
<div ng-hide="myObj.$value === null">
[...]
</div>
来自the doc:
如果数据库中的值是基元(布尔值,字符串或 数字)然后该值将存储在此
$value
键下。修改 此值然后调用$save()
也将更新服务器 值。请注意,只要存在其他密钥,就会忽略此密钥。至 将对象更改为原始值,删除其他键并添加 这个对象的关键。
[...]
我的$firebaseObject
有这样的孩子:
key: {
value1: 'something',
value2: 'something'
}
当我和$value
玩游戏时,我发现了这个:
$firebaseObject
没有孩子时,$value
为null
$firebaseObject
有一个孩子时,$value
是其关键$firebaseObject
有一个以上的孩子时,$value
包含所有子对象问题是,我可以用$value
这种方式来解决我的问题,还是因为......?
答案 0 :(得分:1)
因为这是绑定控制器中数据的方式:
function MainController($firebaseObject) {
var ref = new Firebase('https://yours.firebaseio.com');
vm.users = $firebaseObject(ref.child('users'));
这适用于show / hide:
<div class="small-12 column" ng-show="vm.users">
<h1>No user</h1>
</div>
<div class="small-12 column" ng-show="!vm.users">
<h1>Users</h1>
<ul>
<li ng-repeat="user in vm.users">{{user}}</li>
</ul>
</div>
顺便说一下:由于您使用的是ng-repeat
用户,因此您需要将其设为$firebaseArray()
。