栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

AngularJS十进制输入:将逗号更改为点

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AngularJS十进制输入:将逗号更改为点

恐怕我不熟悉

FCSA number
:(

但是,如果您的目标是了解如何实现一个 很容易 满足您需求的 简单的面向角度的解决方案
,请继续阅读…您将在

price
我在插件中实现的指令下面找到。它非常简单,我建议您花些时间研究它,然后在
price
指令和
FCSA
源代码的启发下实现自己的解决方案。


  1. a
    filter
    将逗号数字转换为十进制数字:
        app.filter('comma2decimal', [    function() { // should be altered to suit your needs        return function(input) {        var ret=(input)?input.toString().trim().replace(",","."):null; return parseFloat(ret);        };    }]);

此过滤器将自动将数据从视图格式(带逗号)转换为模型格式(您的范围,带小数)。


  1. a
    filter
    将十进制数字转换为逗号数字:
        app.filter('decimal2comma', [    function() {// should be altered to suit your needs        return function(input) { var ret=(input)?input.toString().replace(".",","):null; if(ret){     var decArr=ret.split(",");     if(decArr.length>1){         var dec=decArr[1].length;         if(dec===1){ret+="0";}     }//this is to show prices like 12,20 and not 12,2 } return ret;        };    }]);

此过滤器将自动将数据从模型格式(您的范围,带小数点)转换为视图格式(您的视图,带逗号)。


  1. 使用这两个过滤器的
    directive
    指定 价格
        app.directive('price', ['$filter',    function($filter) {    return {        restrict:'A',        require: 'ngModel',        link: function(scope, element, attrs, ngModelController) { ngModelController.$parsers.push(function(data) {     //convert data from view format to model format     data=$filter('comma2decimal')(data);     return data; }); ngModelController.$formatters.push(function(data) {     //convert data from model format to view format     data=$filter('decimal2comma')(data);     return data; });        }    };}]);

查看这个工作正常的工具,展示一切如何协同工作。

最初,数字(例如,来自数据库)在控制器范围内具有十进制值($ scope.price = 25.36;);

在视图中,它看起来像:在输入中为25,36,在下面的数据库中为25.36。

现在输入任何逗号数字:它将自动转换为十进制数字以插入数据库。

希望这能回答您的问题。


使用指令的优势 :它可重复使用,可在您网站上的任何地方使用它。

使用两个过滤器的优点 :关注点分离。


这种方法使用户可以使用他们在视图中最常用的数字。但是,输入的数字在插入数据库之前可以在后台更改,因此它们的格式正确。

当您从数据库中获取价格/数字时,价格/数字会自动更改,然后以更适合读者的方式在视图中显示。

如果您需要

FCSA
Number指令中的其他选项,则可以轻松地将它们添加到过滤器中。

您可能需要使用的自定义函数和模型验证

ngModelCtrl.$setValidity



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394626.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号