2016-11-28 188 views
0

我在我的应用程序中使用角度1.5,我在其中使用来自其他服务调用的JSON响应以在UI上显示数据。我现在有要求根据来自其他服务调用的特定'statu'来更改UI上显示的文本。有人可以帮助我如何使用角度过滤器来实现这一目标吗?使用角度过滤器

JSON响应:

var response = { 
    "recordCnt": 1, 
    "details": [{ 
    "type": "user", 
    "**status**": 0 
    }] 
}; 

**status**可以是 '1' 以及 '2'。我需要根据UI上的这些值显示不同的说明。

例如:如果状态为“0”,我必须证明“无效”,“主动”如果状态为“1”和在状态的情况下“过期”“2”

+0

你能接受一个答案,如果您的问题解决了吗? :) – Mistalis

回答

1

我想你只需要在这种情况下ng-if条件:

<div ng-if="response.details[0].status = 0">inactive</div> 
<div ng-if="response.details[0].status = 1">active</div> 
<div ng-if="response.details[0].status = 2">expired</div> 

Try it on JSFiddle。您可以使用status值查看更改。

+0

实际上,我正在使用此状态显示在角度UI网格的单元格中。所以我必须使用相同的过滤器,因为所有的列都是可配置的。是否有可能使用过滤器做同样的事情? – VishnuNair

+0

您可以在任何HTML标签(不仅是'div')上使用'ng-if'。如果你使用网格,你可以根据自己的需要调整它(可能是'td'而不是'div'?) – Mistalis

+0

如果你提供了我的网格代码样本,我想我可以为你调整它。 – Mistalis

1

您可以使用ng-if

<div ng-controller="listController"> 
    <div ng-if="data.details[0].status == 0">inactive</div> 
    <div ng-if="data.details[0].status == 1">active</div> 
    <div ng-if="data.details[0].status == 2">expired</div> 
    </div> 

DEMO

0

我可以使用自定义的角度滤波器对于相同的,它的工作。谢谢@sajeetharan和@mistalis的输入。

细胞水平配置:

cellTemplate:“{{row.entity [col.field] | getUserStatus}}'//'getUserStatus'是使用的过滤器。

筛选:

(function() { 
    'use strict'; 
    var statusMap = {'inactive', 'active', 'expired'}; 
    var filter = function(statusMap) { 
     return function(status) { 
      return statusMap[status]; // 'status' could be '0', '1' and '2' 
     }; 
    }; 

    angular.module('app.userSearch).filter('getUserStatus', filter); 
})();