AngularJS - 指令格式化程序不适用于空值

时间:2017-09-11 06:12:10

标签: javascript angularjs angularjs-directive

问候语。就我而言,当ngModel值(下面的val)不为null时,我可以正常使用formatter。 (< input>标签将被格式化。)

ngModelCtrl.$formatters.push(function (val) {
    if (val) {
        console.log('log positive');
        return 'Record found';
    } else {
        console.log('log negative');
        return 'No record';
    }
});

这意味着<输入>只有在val包含值时才会格式化标记。但是,我发现虽然显示了'log negative',但<输入>标签也没有被格式化。

我想知道是否有办法解决这个问题?提前谢谢。

更新1

以下是我用法的完整代码

HTML

<div ng-app="myApp" ng-controller="memberDetailCtrl" ng-init="ent.lastDepositDate=null;">
    <tit-date title="depositDate" ng-model="ent.lastDepositDate"></tit-date></tit-txt>
</div>

的Javascript

angular.module("myApp", [])

.controller("memberDetailCtrl", function ($scope) {

})

.directive('titDate', function () {
    return {
        restrict: 'E',
        scope: {
            title: '@',
            fieldName: '@',
            ngModel: '='
        },
        template: '<div><span>{{title}}: </span><input ng-model="ngModel" datepicker readonly /></div>'
    };
})
.directive('datepicker', function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModelCtrl) {
            ngModelCtrl.$formatters.push(function (val) {
                if (val) {
                    console.log('log positive');
                    return 'Record found';
                } else {
                    console.log('log negative');
                    return 'No record';
                }
            });
        }
    }
});

1 个答案:

答案 0 :(得分:0)

感谢Bros,最后我发现这是AngularJS 1.3.0中的一个错误。一旦我将其升级到当前版本。