如何使用ng-if来testing一个variables是否被定义

有没有一种方法可以使用ng-if来testing一个variables是否被定义,而不仅仅是真的吗?

在下面的示例( 实时演示 )中,HTML仅显示红色项目的运费,因为item.shipping既定义了非零值。 我也想显示一个蓝色项目(发货定义,但零)的成本,但不是为绿色项目(航运未定义)。

JavaScript的:

 app.controller('MainCtrl', function($scope) { $scope.items = [ { color: 'red', shipping: 2, }, { color: 'blue', shipping: 0, }, { color: 'green', } ]; }); 

HTML:

 <body ng-controller="MainCtrl"> <ul ng-repeat='item in items'> <li ng-if='item.color'>The color is {{item.color}}</li> <li ng-if='item.shipping'>The shipping cost is {{item.shipping}}</li> </ul> </body> 

我试着做ng-if='angular.isDefined(item.shipping)' ,但没有奏效。 也不ng-if='typeof(item.shipping) !== undefined'

尝试这个:

 item.shipping!==undefined 

我编辑你的重拳,包括ABOS的解决scheme。

 <body ng-controller="MainCtrl"> <ul ng-repeat='item in items'> <li ng-if='item.color'>The color is {{item.color}}</li> <li ng-if='item.shipping !== undefined'>The shipping cost is {{item.shipping}}</li> </ul> </body> 

plunkerFork

你仍然可以使用angular.isDefined()

你只需要设置

 $rootScope.angular = angular; 

在“运行”阶段。

查看更新plunkr: http ://plnkr.co/edit/h4ET5dJt3e12MUAXy1mS?p=preview