0

我在模板中有类似以下内容:

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

4

2 回答 2

0

同样在上面的Edit中,但作为答案添加,因此它作为(希望)有用的解决方法更直接可见。


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

于 2014-02-26T21:26:31.440 回答
0

您使用的是哪个版本的 AngularJS?

我正在使用 1.2.10 并且:

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

评估为真。

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

于 2014-02-26T21:50:06.873 回答