3

我对 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">

好好工作。

所以看来问题出在表达式上。如果有任何帮助,我将不胜感激。

4

4 回答 4

8

它不会评估Object.keys表达式内部的函数,因为它实际上并不位于范围内。解决此问题的一种方法是将 分配Object给范围。

$scope.Object = Object;

在你的视野中

<div ng-show="Object.keys(results).length > 0">
    {{Object.keys(results).length}}
</div>
于 2013-08-28T14:10:07.140 回答
2

Ng Show 需要一个指令,你必须用简单的引号括起来

<table ng-show="'Object.keys(results).length > 0'">
于 2013-08-28T14:06:58.363 回答
0

您正在存储data.results$scope.results. 因此,您的范围变量不会有结果。如果要检查results,请使用以下内容。

$http.get(requestUrl).success(function (data) {
        $scope.backEndJson = data;
});

因此你的 HTML 应该有,

<table ng-show="backEndJson(results).length > 0">

顺便说一句,我们不应该$scope在 HTML 端使用,因为 HTML 端的$scope所有操作都假定在范围变量上。

于 2013-08-28T14:13:57.200 回答
0

尝试这个:

<table ng-hide="angular.equals({}, results)">
于 2019-08-08T10:57:34.213 回答