3

我的控制器中有这些行

$scope.VLANEnabledServers = {};
$scope.myEmpty = {};
console.log(angular.equals($scope.myEmpty, $scope.VLANEnabledServers));

ng-show在模板中

<table ng-show="!angular.equals(myEmpty, VLANEnabledServers)" ng-cloak class="table table-striped table-bordered ng-hide">

控制器中的angular.equals功能打印TRUE正确。但是在视图中,无论如何都ng-show应该显示条件!TRUEtable

难道我做错了什么 ?

4

2 回答 2

7

ngShow指令将角度表达式作为属性。

角度表达式可以包含的内容是有限的,虽然它有时看起来像 javascript,但实际上并非如此。有关什么是有效的角度表达式以及什么不是有效的角度表达式的更多详细信息,请参阅链接页面。

您最可能想要做的是在作用域上创建一个函数来为您进行比较,然后从您的表达式中调用该函数:

$scope.isEmptyObject = function (item){
  return angular.equals( {} , item );
}

和:

<table ng-show="!isEmptyObject(VLANEnabledServers)">
于 2014-12-16T14:54:19.873 回答
0

让我们将此逻辑保留在控制器中并且它可以工作(您的 dom 无法以您的方式评估您发送到 equals 函数的对象)

$scope.VLANEnabledServers = {};
$scope.myEmpty = {};
$scope.showme = function() {
    return angular.equals($scope.VLANEnabledServers , $scope.myEmpty);
}

<table ng-show="!showme()" ng-cloak class="table table-striped table-bordered ng-hide">
于 2014-12-16T14:53:35.397 回答