Currency 통화 필터

6946 단어 filter
angularjs에도 사실currency 명령이 하나 있는데 기호만 바꾼 것 같아요.
여기에 간단한 환율 필터를 직접 써놨어요.
   <div ng-controller="ctrl">

        <div>{{ 100 | myCurrency}}</div>

        <div ng-click="change1('SGD')">change</div>         

    </div>   



               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 요청입니다.
요청은 한 번만 하고, 요청이 되돌아올 때는 수동으로 렌더링해야 한다고 판단해야 합니다.

좋은 웹페이지 즐겨찾기