AngularJS - $ interpolate - 添加额外计算逻辑的最佳方法

时间:2015-01-26 13:00:05

标签: angularjs angularjs-directive expression string-interpolation

我有以下代码段(见下文)

建议的方法是向$interpolate字符串添加其他逻辑吗?

例如,我想将tax添加到金额中。

{{amount + (amount / 100 * tax) | currency}}

而不是:

{{amount | currency}}

问题是这只是将值附加到字符串。

我如何告诉Angular我想使用数字?

 .directive("evalExpression2", function ($parse, $interpolate) {
                var expressionFn = $parse("total | currency");
                var interpolationFn = $interpolate("The total is: {{amount | currency}}");
                return {
                    scope: {
                        amount: "=amount",
                        tax: "=tax",
                    },
                    link: function (scope, element, attrs) {
                        scope.$watch("amount", function (newValue) {
                            var localData = {
                                total: Number(newValue)
                                + (Number(newValue) * (Number(scope.tax) / 100))
                            }
                            //element.text(expressionFn(scope, localData));
                            element.text(interpolationFn(scope));
                        });
                    }
                }
            });

1 个答案:

答案 0 :(得分:1)

在整个计算周围使用括号:

{{ (amount + (amount / 100 * tax)  ) | currency }}

避免|运算符优先于+运算符。

<强>参考