【问题标题】:Image Filter in ng-grid using angular Js is not properly working使用角度 Js 的 ng-grid 中的图像过滤器无法正常工作
【发布时间】:2015-03-18 09:49:42
【问题描述】:

我想根据值显示图像,所以我尝试为它应用一些过滤器,但无法弄清楚为什么它不起作用。它只是显示一个没有图像的列。不知道出了什么问题,为什么它没有正确匹配。请帮帮我。在此先感谢。任何帮助将不胜感激。

我的过滤器看起来像

app .filter('imagefilter', function() {
    return function(SA) { 
      if('SA'===0) return 'http://goo.gl/aFomAA';
      if('SA'===1) return 'http://goo.gl/vxCnLC';
      if('SA'===2) return 'http://goo.gl/aFomAA';
        //other mappings
   }
});

单元格模板看起来像

{
      field: "SA",
      sortable:true,
      displayName:"Service Affecting",
     cellTemplate:'<div class="ngCellText" ng-class="col.colIndex()"><span ng-cell-text><img class="flag" ng-src="{{row.getProperty(\'SA\') | imagefilter}}"</img></span></div>',
    width: '80px'

    }

【问题讨论】:

    标签: angularjs filter ng-grid


    【解决方案1】:
    if("SA"==="0") return 'http://goo.gl/aFomAA';
    

    永远不会是真的,我想你想要

    if(SA==="0") return 'http://goo.gl/aFomAA';
    

    【讨论】:

    • 我想引起人们对我从一些外部 JSON 文件中获取数据的关注
    【解决方案2】:

    好的,我可以使用以下网格,它比原始帖子中的网格稍微简化了一点:

    过滤器:

    .filter('imagefilter', function() {
            return function(SA) {
                if(SA==='0') { return 'http://goo.gl/aFomAA'; }
                if(SA==='1') { return 'http://goo.gl/vxCnLC'; }
                if(SA==='2') { return 'http://goo.gl/aFomAA'; }
                return 'unknown';
            };
    
        })
    

    网格:

    <div class='gridStyle' ng-grid='gridOptions'></div>
    

    一些样本数据:

    $scope.myData = [{name:'John', SA:'0'}, 
                     {name:'Mary', SA: '1'}, 
                     {name:'Fred', SA: '2'}, 
                     {name:'Joan', SA: '0'}];
    

    网格模板:

    $scope.gridOptions = { data: 'myData', 
    columnDefs:[{field:'name', displayName:'Name'}, 
                {field:'SA', displayName:'ServiceAffecting', 
    cellTemplate:'<div><img ng-src="{{row.getProperty(\'SA\') | imagefilter}}"></img></div>'}]};
    

    鉴于模板的复杂性,您的模板中的错误未围绕 row.getProperty 和 {{}} 可能很难发现。

    【讨论】:

    • 它在我的情况下不起作用,可能是因为我正在从一些 JSON 文件中将数据填充到网格中...plnkr.co/edit/7NkYmP0EMUS0agGZbWve?p=preview,检查并建议我做错了什么。谢谢:)
    • 您的 plunkr 有几个问题:请参阅下面的答案
    【解决方案3】:

    你发的plnkr有3个问题:

    1. 您的过滤器仍在执行以下操作;

      if('SA'===0) { return 'http://goo.gl/aFomAA'; }

    它需要从 SA 中删除单引号

    if(SA===0) { return 'http://goo.gl/aFomAA'; }
    
    1. 过滤器需要移到这行代码上面

      $scope.filter = 'D';

    我不知道为什么,但 $scope.filter 似乎会干扰 app.filter - 我没有遵循这部分代码的操作,但是将过滤器移到这一行上方是可行的。

    1. 单元格模板中有多余的双引号

      cellTemplate:''

    应该是:

    cellTemplate:'<div><img ng-src="{{row.getProperty(\'SA\') | imagefilter}}"></img></div>'
    

    通过这 3 项更改,过滤器似乎可以正常工作,只是其中一项是 SA=4,它尚未在过滤器中。

    我在这里分叉并更新了你的 plnkr:

    http://plnkr.co/edit/oaFjjBMVa632NbEHSjGR?p=preview

    【讨论】:

    • 我尝试过使用引号,删除它们,并且 $scope.filter='D' 只是不必要的,删除它。在进行更改后,您建议我的网格只显示一个空列,没有完全没有图像......这是真正的问题,不知何故它没有从 JSON 中获取值,我认为 :( 或者不知道但我无法找出它有什么问题。你共享的链接也没有更新,,,如果您对我的 plunker 进行了更改并且如果它显示图像,那么请也分享该链接
    • plnkr 似乎已关闭,因此我还无法验证我的链接。同时尝试删除图像并删除过滤器:
      {{row.getProperty(\'SA\')}}
      。如果可行,则添加过滤器
      {{row.getProperty(\'SA\') |图像过滤器}}
      。如果可行,请尝试恢复 img 标签。第一步将验证您的 json 是否被正确处理。第二步将验证您的过滤器的操作。
    • 问题仅与图像过滤器有关 :(
    • plnkr.co/edit/oaFjjBMVa632NbEHSjGR?p=preview 已更新 - 你能再检查一下吗?
    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2019-11-12
    • 2020-03-07
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多