ngModelCtrl。$解析器从数组中的第一个解析器运行到数组中的最后一个解析器,而ngModelCtrl。$ formatters从数组中的最后一个格式化程序运行到数组中的第一个格式化程序。只是想知道这背后的理由。
来自angular.js(v1.2.1)的片段:
...
var formatters = ctrl.$formatters,
idx = formatters.length;
ctrl.$modelValue = value;
while(idx--) {
value = formatters[idx](value);
}
...
答案 0 :(得分:0)
这允许始终推送解析器和格式化程序。
假设你有一个解析器将输入的字符串转换为毫秒数,然后是另一个将毫秒转换为Date的解析器。
您需要相应的格式化程序:一个将Date转换为毫秒数,另一个将毫秒转换为字符串。让格式化程序以解析器的相反顺序运行是有道理的:你可以简单地执行
ctrl.$parsers.push(stringToMillis);
ctrl.$formatters.push(millisToString);
...
ctrl.$parsers.push(millisToDate);
ctrl.$formatters.push(dateToMillis);