根据这,给定以下语法,“货币”筛选器将amount作为第一个参数:
{{ currency_expression | currency : amount : symbol}}但在下面的示例中,它从未将amount作为参数传递:
<span id="currency-default">{{amount | currency}}</span>我假设示例中的amount引用了文档中编写的语法中的currency_expression。他们本可以这样写在文档中:
{{ currency_expression | currency : symbol}}另一个示例是具有以下语法的filter 过滤器:
{{ filter_expression | filter : array : expression : comparator}}但在下面的示例中,它从未指定“源数组”参数:
<tr ng-repeat="friendObj in friends | filter:search:strict">如果我们要遵循文档中所写的语法,那么我假设示例中的friendObj in friends指的是filter_expression,而search指的是array。他们本可以这样写在文档中:
{{ filter_expression_that_returns_array | filter : expression : comparator}}我不太确定我是否遗漏了什么东西,但是这些文档对我来说没有意义,因为它们的例子。
我的问题是,我是否应该忽略文档中所说的第一个参数必须是输入?
发布于 2014-04-08 05:28:58
就我个人而言,我总是在有疑问的时候读源代码。
对于您的<span id="currency-default">{{amount | currency}}</span>示例:
https://github.com/angular/angular.js/blob/master/src/ng/filter/filters.js#L50
currencyFilter.$inject = ['$locale'];
function currencyFilter($locale) {
var formats = $locale.NUMBER_FORMATS;
return function(amount, currencySymbol){
if (isUndefined(currencySymbol)) currencySymbol = formats.CURRENCY_SYM;
return formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, 2).
replace(/\u00A4/g, currencySymbol);
};
}在我看来,amount然后是currency,所以输入必须是第一个参数。
更新.
HTML模板绑定上下文中的filter源。
https://github.com/angular/angular.js/blob/master/src/ng/filter/filter.js#L116
function filterFilter() {
return function(array, expression, comparator) {
if (!isArray(array)) return array;第一个if是对作为第一个参数的array (也称为输入)的检查。
https://stackoverflow.com/questions/22927342
复制相似问题