簡體   English   中英

angular.equals()是否可以作為角度表達式使用?

[英]Does angular.equals() work as an angular expressions?

如果對象非空,我正在嘗試顯示div。 使用這個答案,我試圖使用angular.equals來檢查angular.equals ,但它的行為不符合預期

 var test = angular.module('test',[]); test.controller('testCtrl', ['$scope', function($scope){ $scope.foo={}; $scope.bar="bam" }]); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="test"> <div ng-controller="testCtrl"> <div ng-show="!angular.equals(foo,{})">{{bar}}</div> </div> </div> 

這里的期望是bar的值只會顯示foo是否不等於空對象。 但是, foo顯然設置為{}但仍然顯示bar

如果要從模板或表達式訪問angular對象,則必須在要使用它的范圍內使其可用。 在這種情況下,您可以將它放在testCtrl的范圍內。

 var test = angular.module('test',[]); test.controller('testCtrl', ['$scope', function($scope){ $scope.angular = angular; $scope.foo={}; $scope.bar="bam" }]); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="test"> <div ng-controller="testCtrl"> <div ng-show="!angular.equals(foo,{})">{{bar}}</div> </div> </div> 

我通常將實用程序對象放在$rootScope ,因此它們可以在任何地方使用。

更簡潔的方法是只將angular equals方法添加到$ scope:

var test = angular.module('test',[]);

test.controller('testCtrl', ['$scope', function($scope){
   $scope.angularEquals = angular.equals;
}

然后你可以在模板中使用equals方法,例如:

<div ng-show="!angularEquals(foo,{})">{{bar}}</div>

您的視圖正在查找范圍上的函數,並且$scope.angular.equals不存在。 你需要寫一個這樣的:

 var test = angular.module('test', []); test.controller('testCtrl', ['$scope', function($scope) { $scope.foo = {}; $scope.bar = "bam"; $scope.isEmpty = function(obj) { return angular.equals(obj,{}); }; } ]); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="test"> <div ng-controller="testCtrl"> <div ng-hide="isEmpty(foo)">{{bar}}</div> </div> </div> 

角度函數不能用於內聯,AFAIK。 您可以使用控制器內部的函數進行相等的檢查,然后返回結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM