AngularJS - ngRepeat& ngShow&自定义过滤器 - 优化

时间:2015-03-31 12:05:23

标签: angularjs angularjs-ng-repeat ionic angularjs-filter

我写了一个简单的过滤器来获取本地化的文本。我在列表中使用它。当找不到单词时我想隐藏该项目。我设法解决这个问题:

<ion-item ng-repeat="(key, data) in details" ng-if="key != 'Id' && key != 'Invoices' && key != 'Number' && key != 'Attributes' && data && key!= null" ng-show="(key | translate: clientCode:'Payments':'es').length > 0">
      <p style="float:left;  text-transform: capitalize;">{{key | translate: clientCode:'Payments':'es'}}:</p>
      <p style="float:right;">{{data}}</p>
</ion-item>

但是我在每个项目中使用过滤器两次让我觉得很奇怪。有一个更好的方法吗?非常感谢你们。

如果有帮助,这是我的过滤器代码:

.filter("translate", function(Text) {
    var data = null, serviceInvoked = false;

    function realFilter(input) {
        for(var i = 0; i < data.length; i++)
            {
              if(data[i].Field == input)
              {
                //console.log(data[i].Description);
                return data[i].Description;
              }
            }
    }
    testFilter.$stateful = true;
    function testFilter(input, clientCode, type, lang) {
        if( data === null ) {
            if( !serviceInvoked ) {
                serviceInvoked = true;
                var texts = Text.query({"clientCode": clientCode, "type": type, "lang": lang});
                texts.$promise.then(function() {
                    data = texts;
                });
            }
            return "-";
        }
        else return realFilter(input);
    }

    return testFilter;
});

0 个答案:

没有答案