AngularJS 1.2.13 ng-if不重新评估$ resource结果

时间:2014-02-26 17:53:19

标签: javascript angularjs angular-ng-if

我在模板中有以下内容:

<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",我能够解决这个问题,但这感觉很糟糕。如果有人有更好的见解或解决方案,请分享!

2 个答案:

答案 0 :(得分:0)

同样在上面的修改中,但作为答案添加,以便更直接地显示为(希望)有用的解决方法。


结果是ng-if的“truthy”版本不包含数组,即使数组不为空。通过添加将条件转换为ng-if =“!! foo”,我能够解决这个问题,但这感觉很糟糕。如果有人有更好的见解或解决方案,请分享!

答案 1 :(得分:0)

您使用的是什么版本的AngularJS?

我正在使用1.2.10和:

$scope.foo = []; ng-if="foo"

评估为真。

也许第一个div不在包含foo的控制器的范围内?