Angularjs Can';t在具有隔离作用域的指令中使用自定义筛选器

Angularjs Can';t在具有隔离作用域的指令中使用自定义筛选器,angularjs,Angularjs,我已经在这上面呆了很长一段时间了,可能有一个简单的解决方法,但我对指令非常陌生。我有一个指令,它在一个孤立的范围内。我有一个已经在应用程序中注入的过滤器,但由于某些原因,它无法在指令的隔离范围内工作。这是我的指令代码(名称已抽象) 以及我的模板中的一个片段: {{10| formatAmount: '$' : 'USD'}} 在使用toFixed()之前,必须确保amount是一个数字 这很奇怪。我还应该说,我的错误消息是:无法插入:{{item[“amount”]| formatAmount

我已经在这上面呆了很长一段时间了,可能有一个简单的解决方法,但我对指令非常陌生。我有一个指令,它在一个孤立的范围内。我有一个已经在应用程序中注入的过滤器,但由于某些原因,它无法在指令的隔离范围内工作。这是我的指令代码(名称已抽象)

以及我的模板中的一个片段:

{{10| formatAmount: '$' : 'USD'}}

在使用toFixed()之前,必须确保amount是一个数字


这很奇怪。我还应该说,我的错误消息是:无法插入:{{item[“amount”]| formatAmount:item[“currency_symbol”]}{{{item[“currency_code”]}}}TypeError:undefined不是函数是的,数组定义良好。即使没有数组放置静态数字,浏览器也会返回相同的错误。如果我将范围从指令中移除(使其不被隔离),过滤器就会工作。我认为这肯定是一个范围问题。项目是由两个项目组成的数组,每个项目都具有预期的属性。我还应该提到指令和过滤器在两个独立的模块中。也许我需要将SharedFilters模块注入SharedDirectives模块?哇哦。这就解决了问题。真不敢相信我在这上面花了这么长时间。谢谢你,3413129。真正的救命恩人。测试变量是否定义的惯用方法是:
typeof foo!='未定义的“
。或者,您可以使用Angular:
Angular.isDefined(foo)
中包含的函数。
{{10| formatAmount: '$' : 'USD'}}
filterModule.filter('formatAmount', function() {
    return function(amount, symbol, code) {
        if(amount != undefined && code != undefined) {
            var fixedAmount = Number(amount).toFixed(2);
            return symbol + fixedAmount + ' ' + code; 
        }
        else if(code == undefined && amount != undefined) {
            var fixedAmount = Number(amount).toFixed(2);
            return symbol + fixedAmount;
        }
    };
});