显示值是否为空

时间:2014-06-13 15:25:39

标签: angularjs

如果值为空,我需要在table单元格中显示不间断的空格。这是我的模板:

<td class="licnum">{{participant.LicenseNumber}}</td>

我试过这个,但它不起作用:

<td class="licnum">{{participant.LicenseNumber} || "$nbsp;"}</td>

以下是返回null值的问题:

enter image description here

如果许可证号码带有null值,则该单元格为空,行着色如下所示。

使用lucuma的建议,它显示了这一点:

enter image description here

更改过滤器中的if语句后,仍然不会显示非null值:

enter image description here

2 个答案:

答案 0 :(得分:15)

你有什么应该工作。您缺少结束}并且在表达式的中间有一个需要删除。

这是一个演示您的解决方案工作和ng-if的演示。 http://plnkr.co/edit/UR7cLbi6GeqVYZOauAHZ?p=info

过滤器可能是最佳选择,但您可以使用简单的ng-if或ng-show(在td或甚至跨度上)来实现:

<td class="licnum" ng-if="participant.LicenseNumber">{{participant.LicenseNumber}}</td>
<td class="licnum" ng-if="!participant.LicenseNumber">&nbsp;</td>

<td class="licnum"><span ng-if="participant.LicenseNumber">{{participant.LicenseNumber}}</span><span ng-if="!participant.LicenseNumber">&nbsp;</span></td>

我提供这个作为替代解决方案,不需要向控制器/过滤器添加代码。

您可以阅读一些关于此方法的内容:if else statement in AngularJS templates

答案 1 :(得分:6)

angular.module('myApp',[])
    .filter('chkEmpty',function(){
        return function(input){
            if(angular.isString(input) && !(angular.equals(input,null) || angular.equals(input,'')))
                return input;
            else
                return '&nbsp;';
        };
    });

正如@Donal所说,为了让这个工作,你需要像这样使用ngSanitize's指令ng-bind-html

<td class="licnum" ng-bind-html="participant.LicenseNumber | chkEmpty"></td>

修改

以下是一个简单示例:http://jsfiddle.net/mikeeconroy/TpPpB/