我有以下问题与ngShow。我从$ http.get收到jSON的响应 并使用ngRepeat构造几个DOM元素。这一切都正常。从我的控制器中只需申请:
$http.get(requestUrl).success(function (data) {
$scope.results = data.results;
});
data.results是这样的对象:
{
"someProp": ["item1", "item2", "item3"],
"someProp1": ["item1", "item2", "item3"]
}
从我的模板中我尝试使用这样的ngShow:
<table ng-show="Object.keys(results).length > 0">
并且像这样:
<table ng-show="Object.keys($scope.results).length > 0">
没有运气。
<table ng-show="true">
和
<table ng-show="false">
正常工作。
所以似乎问题在于表达式。我会非常感谢任何帮助。
答案 0 :(得分:7)
它不会评估表达式中的Object.keys
函数,因为它实际上并不位于作用域中。解决此问题的一种方法是将Object
分配给范围。
$scope.Object = Object;
并在您的视图中
<div ng-show="Object.keys(results).length > 0">
{{Object.keys(results).length}}
</div>
答案 1 :(得分:2)
Ng Show需要一条指令,你必须用简单的引号将其包围起来
<table ng-show="'Object.keys(results).length > 0'">
答案 2 :(得分:0)
您正在将data.results
存储到$scope.results
。因此,您的范围变量不会产生结果。如果您要查看results
,请使用以下内容。
$http.get(requestUrl).success(function (data) {
$scope.backEndJson = data;
});
因此你的HTML应该有,
<table ng-show="backEndJson(results).length > 0">
顺便说一句,我们不应该在HTML端使用$scope
作为$scope
,因为HTML端的所有操作都假定在范围变量上。
答案 3 :(得分:0)
尝试一下:
<table ng-hide="angular.equals({}, results)">