[英]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.