Angular输入指令不传递值

时间:2014-09-01 09:12:41

标签: angularjs directive

我试图编写一个指令,在幕后将逗号转换为点,以便输入字段中的输入可以正确保存到数据库中。我仍然希望该字段显示未经编辑的输入。

我得到了以下内容:

App.directive('input', function () {
return {
    restrict: 'E',
    require: 'ngModel',
    scope: {
    },
    link: function(scope, iElement, iAttrs, ngModelController) {
        if (iAttrs.type !== 'commasallowed') return;

        iElement.unbind('input');
        iElement.bind('input', function() {

            ngModelController.$render = function() {
                console.log("start render");
                iElement.val(scope.screenValue);
            };

            scope.$apply(function () {
                scope.screenValue = iElement.val();
                scope.toDb = parseFloat(scope.screenValue.toString().replace(",", "."));

                ngModelController.$setViewValue(scope.toDb);
                console.log(ngModelController.$viewValue);

                ngModelController.$render();
            });
        });
    }
};
});

当我开始输入输入字段时,第25行的console.log记录了ngModelController的正确值。$ viewValue被正确记录为带点而不是逗号的数字, 但是当我处理表单时,只保存点之前的数字....

0 个答案:

没有答案