如何从未定义的值中过滤?

时间:2014-03-31 14:48:00

标签: angularjs

我从Tomcat服务器获取数据。数据是JSON格式化为:

[
    {name: "Smith",
    address: [
        {city: "LA"},
        {city: "NY"}
    ],
    firstName: "Rob"},
    {/* Idem */}
]

我的一个控制器将这些数据设置为$scope.people,它将我的视图绑定到带循环的表中。但是当地址数组为空时,一些原始数据不会出现。

如何用-字符串替换每个空数组?这是否有过滤器?

1 个答案:

答案 0 :(得分:2)

我会使用自定义过滤器来实现您想要的任何逻辑。

类似的东西:

<强> HTML

  <tr data-ng-repeat="hotel in names |  myfilter:replaceWith">

<强> JS

iApp.filter('myfilter', function() {

   var replaceWith = 'none';

   var replaceMe = function(value){
      if(value === undefined){
            return replaceWith;
          }
          return value;
   };

   return function( items, rw) {
    var filtered = [];
    replaceWith = rw;

    angular.forEach(items, function(item) {

        item.name      = replaceMe(item.name);
        item.firstName = replaceMe(item.firstName);
        item.address   = replaceMe(item.address);

       filtered.push(item);
    });

    return filtered;
  };
});

演示 Plunker

enter image description here

  

小心!已过滤的列表应具有与输入列表相同的项目结构。否则,您可以获得 10 $ digest()迭代。中止!