如何在AngularJS中显示未定义表达式值的占位符?

Jus*_*cha 61 javascript placeholder angularjs

如果我有一个表达式{{ x }}并且x是undefined或者null,那么我该如何为它显示占位符?

我在答案中提供了一个解决方案,但我想知道其他方法有哪些.也许,也适用于承诺的占位符.

Umu*_*acı 96

{{ counter || '?'}}.只是纯粹的JavaScript.||可以用作默认值.由于每个都是不同的空消息,因此通用指令不适用于许多情况.

如果你想将另一个类应用于空类,那么它也是内置的:

<div ng-class="{empty: !counter}" ng-bind="counter || ?"></div>
Run Code Online (Sandbox Code Playgroud)

  • FWIW,确保在任何过滤器之前放置默认值(例如`{{counter ||'?'| myfilter}}`). (12认同)
  • 这个答案简单而干净,但缺点是它不仅会在`null`和`undefined`上显示占位符,而且还会在`0`上显示,它可以是有效值. (12认同)
  • @Jesse的巨大+1 (3认同)

Jus*_*cha 25

我会这样做,但也许有更好的方法:

angular.module('app').filter('placeholdEmpty', function(){
  return function(input){
    if(!(input == undefined || input == null)){
      return input;
    } else {
      return "placeholder";
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

然后使用 {{ x | placeholdEmpty}}

  • 过滤器解决方案优于{{counter || '?'}}是你可以区分undefined,null或zero. (4认同)

jsz*_*ody 13

我是用ng-show做的,像这样:

<strong>{{username}}</strong>
<span class="empty" ng-show="!username">N/A</span>
Run Code Online (Sandbox Code Playgroud)

当然,它为我的观点添加了更多元素,我可能能够以不同的方式处理.我喜欢清楚地看到我的占位符/空值的位置是多么容易,我也可以用不同的方式设置它们.


naX*_*aXa 5

实施default过滤器:

app.filter('default', function(){
  return function(value, def) {
    return (value === undefined || value === null? def : value);
  };
});
Run Code Online (Sandbox Code Playgroud)

并将其用作:

{{ x | default: '?' }}
Run Code Online (Sandbox Code Playgroud)

过滤器解决方案的优点{{ x || '?'}}是您可以区分undefined,null0.