AngularJS - $interpolate - 添加额外计算逻辑的最佳方式
AngularJS - $interpolate - Best way to add additional calculation logic
我有以下代码片段(见下文)
向 $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));
});
}
}
});
在整个计算中使用括号:
{{ (amount + (amount / 100 * tax) ) | currency }}
以避免 |
运算符优先于 +
运算符。
参考资料
我有以下代码片段(见下文)
向 $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));
});
}
}
});
在整个计算中使用括号:
{{ (amount + (amount / 100 * tax) ) | currency }}
以避免 |
运算符优先于 +
运算符。
参考资料