无法在具有隔离范围的指令中使用自定义过滤器

时间:2014-09-26 00:35:05

标签: angularjs

我已经坚持了很长一段时间,并且可能有一个简单的解决方法,但我对指令很新。我的指令属于孤立的范围。我有一个已在应用程序中注入的过滤器,但由于某种原因,它不能在指令的隔离范围内工作。这是我的指令代码(名称已被抽象)

var module = angular.module('SharedDirectives', []);

    module.directive('templ', function(){
        return {
            restrict: 'E',
            templateUrl: 'templates/templ.html',
            scope: {
                itemType: "@",
                items: "=items"
            }
        };
    });

    module.filter('formatAmount', function() {
        return function(amount, symbol, code) {
            if(amount != undefined && code != undefined) {
                var fixedAmount = (amount).toFixed(2);
                return symbol + fixedAmount + ' ' + code; 
            }
            else if(code == undefined && amount != undefined) {
                var fixedAmount = (amount).toFixed(2);
                return symbol + fixedAmount;
            }
        };
    });

我的模板中的一个片段:

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

1 个答案:

答案 0 :(得分:2)

在使用toFixed()

之前,您必须确保金额是一个数字
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;
        }
    };
});