2014-04-11 12 views
0

ngModelCtrl。$ parsers會從數組中的第一個分析程序運行到數組中的最後一個分析程序,而ngModelCtrl。$ formatters會從最後一個運行格式化程序到數組中的第一個格式化程序。只是想知道這背後的理由。

段從angular.js(V1.2.1):

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

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

回答

0

,允許總是推解析器和格式化。我們假設你有一個解析器將輸入的字符串轉換成毫秒數,然後再進行另一個將毫秒轉換爲Date的解析器。

您將需要相應的格式化程序:將Date轉換爲毫秒數的格式化程序,以及將毫秒轉換爲String的格式程序。讓格式化器按解析器的反向順序運行是有道理的:你可以簡單地做:

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

... 

ctrl.$parsers.push(millisToDate); 
ctrl.$formatters.push(dateToMillis); 
相關問題