繁体   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