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