Преобразование возвращаемых целочисленных значений 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);
};
});