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ディレクティブは、角度式を属性として受け取ります。

angular 式に含まれるものには制限があり、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 に答える