对于$ scope上的普通Javascript对象,您可以使用带有div的ngShow来使div的存在取决于对象的存在。
$scope.myObj = null;
// And then later
$scope.myObj = {arbitrary:{number:{of:"objects"}}};
...
<div ng-show="myObj">{{myObj}}</div>
但是如果你将一个对象绑定到$ firebaseObject
var fbObjRef = new Firebase(FirebaseURL).child("fbObj")
$scope.myObj = $firebaseObject(fbObjRef);
然后你的ngShow将无效,因为Firebase中为空的引用仍然会被客户端表示为:
{
"$id":"fbObj",
"$priority":null,
"$value":null
}
然后如果在该引用处设置了非原始内容,$ value键将消失并被内容替换:
{
"$id":"fbObj",
"$priority":null,
"someKey":{
"anotherKey":"someValue"
}
}
检查$ firebaseObject是否存在的最佳方法是什么?这就是我正在做的事,但感觉很笨重。也许这是一个向AngularFire API添加$ exists键的机会。
<div ng-show="myObjExists()">{{myObj}}</div>
...
$scope.myObjExists = function(){
return !(
$scope.myObj.hasOwnProperty("$value")
&& $scope.myObj.$value === null
);
};