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