Преобразование возвращаемых целочисленных значений AngularFire JSON в десятичные числа (100 - 1,00) с использованием AngularJS

Я пытаюсь преобразовать данные, которые возвращаются из источника JSON (Firebase через AngularFire), и отображать их в долларах. Данные хранятся в центах в будущем API, который Firebase претендует на раннюю работу над пользовательским интерфейсом.

Я знаю, что валютный фильтр преобразует значение и усекает десятичные дроби, вставляет символы валюты и т. Д., Но мне нужно также преобразовать полученные данные из центов (1234) в долларовый эквивалент (12,34).

Образец:

angular.module('MyApp').factory("StoreItems", ["$firebaseObject", "$firebaseArray", "GetFireBaseObject",
    function($firebaseObject, $firebaseArray, GetFireBaseObject) {
        var StoreItemsRef = GetFireBaseObject.DataURL('StoreItems/');
        return {
            AllStores: function() {
                return $firebaseObject(StoreItemsRef);
            },
            OneStore: function(StoreKey) {
                var OneStoreRef = StoreItemsRef.child(StoreKey);
                return $firebaseObject(OneStoreRef);
            },
            OneStoreItems: function(StoreKey) {
                var OneStoreRef = StoreItemsRef.child(StoreKey);
                return $firebaseArray(OneStoreRef);
            }
        };
    }
]);

angular.module('MyApp').controller("StoreItemsCtrl", ["$scope", "StoresData", "StoreItems", 
    function($scope, StoresData, StoreItems) {
        var StoreData = {};

        $scope.StoreList = StoresData.AllStores();
        $scope.SelectedStoreKey = null;

        $scope.LoadStoreData = function(StoreKey) {
            $scope.SelectedStore = StoresData.OneStore(StoreKey);
            $scope.StoreItemData = StoreItems.OneStoreItems(StoreKey);

            StoreData = StoreItems.OneStoreItems(StoreKey);
            $scope.StoreItemsGrid.data = StoreData;
        };

        columnDefs = [
            { field: "Key", displayName: "Product Code", visible: true, groupable: false, resizable: true, sortable: true },
            { field: "UnitPrice", displayName: "Unit Price", visible: true, groupable: false, resizable: true, sortable: true, cellFilter: 'currency' },
            { field: "nForPrice", displayName: "nFor Price", visible: true, groupable: false, resizable: true, sortable: true },
            { field: "nForQuantity", displayName: "nFor Qty", visible: true, groupable: true, resizable: true, sortable: true }
        ];

        $scope.StoreItemsGrid = { 
            enableSorting: true
        };
        $scope.StoreItemsGrid.columnDefs = columnDefs;
        $scope.StoreItemsGrid.data = StoreData;
    }
]);

1 ответ

Решение

Если вы все еще хотите использовать currentyFilter, вы можете создать свой собственный фильтр, чтобы просто разделить на 100 и пропустить результат через фильтр валют.

angular.module('MyApp').filter('coinCurrency', function($filter){
    var currencyFilter = $filter('currency');
    return function(input){
        return currencyFilter(input / 100);
    };
});
Другие вопросы по тегам