【问题标题】:How can use a filter in my AngularJS precisely on an ng-bind?如何在 ng-bind 上精确地在我的 AngularJS 中使用过滤器?
【发布时间】:2016-05-30 14:16:44
【问题描述】:

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

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

我能做些什么来纠正它?

感谢您的提前帮助。

【问题讨论】:

  • 你如何使用这个过滤器?而且MyCutFilterCutFilter 不一样——你意识到了这一点,对吗?
  • @dfsq 对不起,我编辑了我的问题 ^^
  • docs.angularjs.org/error/$injector/unpr 可能是依赖注入有错误...
  • 您是否在布局模板中包含过滤器文件?
  • @SwarnavaSarkar 谢谢,我已经检查过了,但我会重新检查,我们永远不知道。

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


【解决方案1】:

查看错误,

错误:[$injector:unpr] 未知提供者:CutFilterProvider

您似乎正试图将Cutfilter 注入名为UpFileController 的控制器中。请从UpFileController 中删除Cutfilter 注入。

【讨论】:

  • 感谢您的建议。
【解决方案2】:

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

'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;
}
.
.
.

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

感谢您的帮助和文档。

【讨论】:

    猜你喜欢
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 2015-10-29
    相关资源
    最近更新 更多