博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Currency 货币 filter
阅读量:7038 次
发布时间:2019-06-28

本文共 3411 字,大约阅读时间需要 11 分钟。

angularjs 其实也有一个currency指令,不过好像只是换符号而已。

这里自己写了一个简单的兑换率filter

{
{ 100 | myCurrency}}
change
angular.module("Main", dependentModuleList). controller("ctrl", function ($scope, currencyService) { $scope.change1 = function (code) { currencyService.changeCodeTo(code); }; });

调用大概是这样的 , 100 应该变成 USD 100.00 ,点击事件后就兑换成 SGD xx.xx 

angular.module("Currency", []).        provider("currencyService", [function () {            var that = this;            this.defaultCode = "USD"; //允许通过provider修改            this.$get = ["$rootScope", function ($rootScope) {                var COOKIE_KEY = "currecyCode";                var SERVICE_PATH = "//service.stooges.com.my/currency.ashx?defaultCode=" + that.defaultCode; //这里可以请求一个当前的 rate table (来自 http://www.xe.com/currencytables)                var defaultCode = that.defaultCode;                var currentCode = G.s.Cookie.get(COOKIE_KEY) || defaultCode;                var rateColletion = {}; //{USD:3.1538542348}                var ajaxing = false;                function getRateFromServer() {                                      ajaxing = true;                    G.s.fn.jsonp(SERVICE_PATH).then(function (response) {                                               ajaxing = false;                        rateColletion = JSON.parse(response).data;                                                $rootScope.$digest(); //手动渲染                                        }, function () {                        console.log("get currency rate table fail !");                    });                }                function getMoneyFormat(money, code) {                    return code + " " + (parseFloat(money).toFixed(2));                }                return {                    changeCodeTo: function (code) {                                                currentCode = code; //请在外部digest                        G.s.Cookie.set(COOKIE_KEY, currentCode, new Date().addMonths(1));                                            },                    convertMoney: function (money) {                                             if (defaultCode === currentCode || ajaxing) {  //正在向服务器请求的话也直接返回                                                   return getMoneyFormat(money, currentCode);                         }                                              var rate = rateColletion[currentCode];                        if (rate != undefined) {                                                       return getMoneyFormat(money / rate, currentCode); //这里是用除法                        }                        else {                                                      getRateFromServer(); //第一次得向服务器请求rate表格                            return getMoneyFormat(money, currentCode);                        }                    }                }            }]        }]).        filter("myCurrency", ["$rootScope", "currencyService", function ($rootScope, currencyService) {            //手动调用的话要注意, 如果没有rate,会直接返回原value            return function (money) {                                return currencyService.convertMoney(money);            }        }]);

 过程是通过渲染时判断当前货币然后去服务端获取兑换率表格进行兑换。这里用的是一个jsonp请求。

 需要判断只请求一次,请求返回时得手动渲染。

 

转载于:https://www.cnblogs.com/keatkeat/p/3950597.html

你可能感兴趣的文章
光流和KLT
查看>>
百度编辑器 无法获取post过去的值
查看>>
pig 的chararry不能用于比较的类型可以comparison operator
查看>>
问题-安装XP时,提示不识别SATA硬盘
查看>>
Xamarin.Android开发实践(六)
查看>>
RMQ(模板 ST 区间最值,频繁的间隔时间)
查看>>
PHP 5.3以上版本推荐使用mysqlnd驱动
查看>>
Android_listview设置每条信息的间距
查看>>
详解Linux服务器最大tcp连接数
查看>>
JAVA & JSON详解
查看>>
C#编程总结(八)数字签名
查看>>
Mac显示隐藏文件的终端命令
查看>>
Spring MVC controller间跳转 重定向 传参 (转)
查看>>
再破博客园登录
查看>>
Entity Framework在WCF中序列化的问题
查看>>
OpenCL快速入门
查看>>
选择生成日报表,月报表,年报表
查看>>
使用位操作
查看>>
Babelfish(二分)
查看>>
JS 中如何判断 undefined 和 null
查看>>