我在模板中有如下内容:
<div ng if="foo">。。。<div><div ng class="foo&&'foo存在'">。。。<div>
在该范围的控制器中,我有以下内容:
$scope.foo = $resource("path/to/resource").query();
资源加载只找到并返回一个简单的JSON数组(通过在Chrome中查看请求进行验证),其他调试显示foo
包含该数组,与它应该包含的完全一样。第二个div
按预期应用foo-is-present
类,但是第一个div
的ng-if
仍被评估为false,从而阻止了div
的呈现。
这似乎不正确,因为我希望在加载资源的结果后显示第一个div
。我在这里错过了什么?
EDIT事实证明,ng-if
版本的"truthy"不包括数组,即使数组不是空的。我可以通过添加将条件转换为ng-if="!!foo"
来解决这个问题,但这感觉很糟糕。如果有人有更好的见解或解决方案,请分享!
同样在上面的编辑中,但添加为一个答案,因此它更容易被视为(希望)有用的解决方法。
事实证明,如果"truthy"的版本不包括数组,即使数组不是空的。我可以通过添加将条件转换为ng if="!!foo"来解决这个问题,但这感觉很糟糕。如果有人有更好的见解或解决方案,请分享!
您使用的是什么版本的AngularJS?
我使用1.2.10和:
$scope.foo = [];
ng-if="foo"
评估为true。
也许第一个div不在包含foo的控制器的范围内?