为什么ngModelCtrl。$ formatters从上到下运行

时间:2014-04-11 16:44:01

标签: angularjs angularjs-directive

ngModelCtrl。$解析器从数组中的第一个解析器运行到数组中的最后一个解析器,而ngModelCtrl。$ formatters从数组中的最后一个格式化程序运行到数组中的第一个格式化程序。只是想知道这背后的理由。

来自angular.js(v1.2.1)的

片段:

  ...
  var formatters = ctrl.$formatters,
      idx = formatters.length;

  ctrl.$modelValue = value;
  while(idx--) {
    value = formatters[idx](value);
  }
  ...

1 个答案:

答案 0 :(得分:0)

这允许始终推送解析器和格式化程序。

假设你有一个解析器将输入的字符串转换为毫秒数,然后是另一个将毫秒转换为Date的解析器。

您需要相应的格式化程序:一个将Date转换为毫秒数,另一个将毫秒转换为字符串。让格式化程序以解析器的相反顺序运行是有道理的:你可以简单地执行

ctrl.$parsers.push(stringToMillis);
ctrl.$formatters.push(millisToString);

...

ctrl.$parsers.push(millisToDate);
ctrl.$formatters.push(dateToMillis);