如何在我的AngularJS中精确地使用ng-bind中的过滤器?

时间:2016-05-30 14:16:44

标签: javascript angularjs angularjs-ng-repeat ng-bind

我尝试使用这个简单的过滤器:

App.filter('MyCutFilter', function ()
{
    return function(input)
    {
        return input.replace(/^.*[\\\/]/, '');
    };
})

在这样的ng-repeat元素上:

<tr ng-repeat="jf in ctrl.Files" class="tablerow">
    <td><span ng-bind="jf.id"></span></td>
    <td><span class="filename" ng-bind="jf.FileName | MyCutFilter"></span></td>

但是我收到了以下错误:

  

错误:[$ injector:unpr]未知提供者:CutFilterProvider&lt; - CutFilter&lt; - UpFileController

我该怎么做才能纠正它?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

查看错误,

  

错误:[$ injector:unpr]未知提供者:CutFilterProvider&lt; -   CutFilter&lt; - UpFileController

看起来您正试图在名为public void depthFirstSearch(Node source){ source.setVisited(true); List<Edge> neighbours = source.getNeighbouringEdges(mEdges); for(Edge edge : neighbours){ if(!edge.getTo().isVisited()){ System.out.println(edge.getTo().getName()); depthFirstSearch(edge.getTo()); }else{ depthFirstSearch(edge.getFrom()); } } } 的控制器中注入Cutfilter。请从UpFileController删除Cutfilter注入。

答案 1 :(得分:0)

最后我创建了我自己的服务:

'use strict';

App.factory('UtilsService', [function(nameTable){

    return {
               parseTheseNames: function ParseThesesNames(nameTable){
                    for (var i=0; i < nameTable.length; i++)
                    {
                        //console.log(d[i].upFileName); 
                        nameTable[i].upFileName = nameTable[i].upFileName.replace(/^.*[\\\/]/, '');
                        //console.log("obj " + d[i].upFileName);
                    }
            }
    };

}]);

我正在使用它:

App.controller('FileController',[..., 'UtilsService',...,
function(..., UtilsService, ...){
.
.
.

function(d){
    UtilsService.parseTheseNames(d);
    self.upFiles = d;
}
.
.
.

我改变了我希望直接从回调中获取数据的内容,以便能够更早地解析文件名。

感谢您的帮助和文档。