Angular JS 1.4 $ formatter只运行一次

时间:2015-05-18 20:32:57

标签: javascript angularjs

我有一个格式化日期字符串的指令。它在页面加载时成功运行,但在此之后,任何输入更改都不会运行格式化程序。

appTracker.directive('dateText', function() {
return {
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, element, attrs, ctrl) {
        ctrl.$parsers.push(function(data) {
            //Cut out all characters that are not numbers
            var dateString = data.replace(/\D/g, '');
            if(dateString.length != 8) {
                ctrl.$setValidity('dateText', false);
                console.log(ctrl);
                return dateString;
            }
            else if ( dateString.length == 8) {
                //Take the MM/DD/YYYY format and flip it to YYYY-MM-DD so we can save it correctly
                ctrl.$setValidity('dateText', true);
                console.log(ctrl);
                console.log(dateString);
                return dateString.substr(4, 4) + '-' + dateString.substr(0,2) + '-' + dateString.substr(2,2);
            }

        });

        ctrl.$formatters.push(function(data){
            console.log('ran');
            if(data) {
                var dateString = data.replace(/\D/g, '');
                if(dateString.length <= 2) {
                    var returnString = dateString;
                }
                else if (dateString.length > 2 && dateString.length <= 4) {
                    var returnString = dateString.substr(0,2) + '/' + dateString.substr(2);
                }
                else if (dateString.length > 4 && dateString.length < 8) {
                    var returnString = dateString.substr(0,2) + '/' + dateString.substr(2,2) + '/' + dateString.substr(4);
                }
                else if(dateString.length >= 8 ) {
                    var returnString = dateString.substr(4,2) + '/' + dateString.substr(6,2) + '/' + dateString.substr(0,4);
                }
                return returnString;
            }
        });
    }
};

});

在加载时,数据库通过&#39; 1986-05-12&#39;并且模型设置成功。该视图显示了&#39; 12/05 / 1986&#39;应该如此。

但是,当您尝试更新输入时,$ formatter永远不会再次运行。它从不记录&#39;运行&#39;,视图始终显示用户键入的原始输入。但是,解析器正在运行,模型已成功格式化为我正在寻找的YYYY-MM-DD格式。

输入输入时,格式化程序是否也不能运行?我在这里做错了什么?

0 个答案:

没有答案