我的控制器中有这些行
$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
中的条件应为!TRUE
,table
仍会显示
我做错了吗?
答案 0 :(得分:7)
ngShow
指令将 angular expression 作为属性。
角度表达式在它可以包含的内容中受到限制,虽然它有时看起来像javascript,但实际上并非如此。有关什么是有效角度表达式的详细信息,请参阅链接页面。
您最有可能想要做的是在示波器上创建一个函数来为您进行比较,然后从您的表达式中调用该函数:
$scope.isEmptyObject = function (item){
return angular.equals( {} , item );
}
使用:
<table ng-show="!isEmptyObject(VLANEnabledServers)">
答案 1 :(得分: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">