Формат чисел в KoGrid

Как я могу отформатировать числа в виде валюты (с запятыми) в KOGrid Knockout?

<div style="height: 200px" data-bind="
  koGrid: {
    data: $parent.gridLoanDetails, 
    columnDefs: [{ 
      field: 'MemoAvailability', displayName: 'Memo Availability', width: 150
    }]
  }
">

РЕДАКТИРОВАТЬ - ПРОСМОТР МОДЕЛИ:

 var vm = {
        gridLoanDetails: gridLoanDetails,
        SearchLCLookup: function (tab, IsAffiliate) {

                var HasRecs = false;
                gridLoanDetails([]);

                if (vm.LCID() != '') {
                    HasRecs = LCDataService.GetLCAppsJSON(gridLoanDetails, '', tab.ClientNum(), tab.BeneficiaryName(), '', '',
                        '', 0, 0, '', '', vm.LCID());
                } //           clientsObservable, ClientName, ClientNum, BeneficiaryName, UserID_CA, UserID_RM, UserID_LPM, ApplicationAmountFROM, ApplicationAmountTO, CreationDateFROM, CreationDateTO

                return HasRecs;

        }
          }
 return vm

СЛУЖБА ДАННЫХ: Метод обслуживания данных - это простой вызов ajax веб-API, который возвращает json.

         var GetLCAppsJSON = function (clientsObservable, ClientName, ClientNum, BeneficiaryName, UserID_CA, UserID_RM, UserID_LPM, ApplicationAmountFROM, ApplicationAmountTO, CreationDateFROM, CreationDateTO, LCID) {

        var LCAppsModel = function (ClientAffilname, AffiliateOrClient, ClientNum, Rating, ClientStatus, ContractExpirationDate, UserID_LPM, UserID_RM, UserID_CA, AffiliateName, CAFullName, LPMFullName, RMFullName, Comments, ClientAvailability, LCLoan, ABLoan, LCID, ApplicationAmount, Tolerance, LCExpireDate, UserID, EmailComments, BeneficiaryName, MemoAvailability, AppID) {
            var self = this;

            self.ClientAffilname = ko.observable(ClientAffilname);
            self.AffiliateOrClient = ko.observable(AffiliateOrClient);
            self.ClientNum = ko.observable(ClientNum);
            self.Rating = ko.observable(Rating);
            self.ClientStatus = ko.observable(ClientStatus);
            self.ContractExpirationDate = ko.observable(ContractExpirationDate);
            self.UserID_LPM = ko.observable(UserID_LPM);
            self.UserID_RM = ko.observable(UserID_RM);
            self.UserID_CA = ko.observable(UserID_CA);
            self.AffiliateName = ko.observable(AffiliateName);
            self.CAFullName = ko.observable(CAFullName);
            self.LPMFullName = ko.observable(LPMFullName);
            self.RMFullName = ko.observable(RMFullName);
            self.Comments = ko.observable(Comments);
            self.ClientAvailability = ko.observable(ClientAvailability);

            self.LCLoan = ko.observable(LCLoan);
            self.ABLoan = ko.observable(ABLoan);
            self.LCID = ko.observable(LCID);
            self.ApplicationAmount = ko.observable(ApplicationAmount);
            self.Tolerance = ko.observable(Tolerance);
            self.LCExpireDate = ko.observable(LCExpireDate);
            self.UserID = ko.observable(UserID);
            self.EmailComments = ko.observable(EmailComments);
            self.BeneficiaryName = ko.observable(BeneficiaryName);
            self.MemoAvailability = ko.observable(MemoAvailability);
            self.AppID = ko.observable(AppID);
        };

        //                  ClientAvailability,
        //          Rating, ClientStatus, UserID, UesrID_LPM, UesrID_RM, UesrID_CA, StatusCode

        $.ajax({
            type: "post",
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            url: "/api/LCPosting/PostLCAppsJSON/",
            data: JSON.stringify({ ClientName: ClientName, ClientNum: ClientNum, BeneficiaryName: BeneficiaryName, UserID_CA: UserID_CA, UserID_RM: UserID_RM, UserID_LPM: UserID_LPM, ApplicationAmountFROM: ApplicationAmountFROM, ApplicationAmountTO: ApplicationAmountTO, CreationDateFROM: CreationDateFROM, CreationDateTO: CreationDateTO, LCID: LCID }),
            cache: false,
            traditional: true,
            async: false,
            success: function (dataIn) {
                newJ = $.parseJSON(dataIn);

                newJ.forEach(function (p) {
                    var clients = new LCAppsModel(p.ClientAffilname, p.AffiliateOrClient, p.ClientNum, p.Rating, p.ClientStatus, p.ContractExpirationDate, p.UserID_LPM, p.UserID_RM, p.UserID_CA, p.AffiliateName, p.CAFullName, p.LPMFullName, p.RMFullName, p.Comments, p.ClientAvailability, p.LCLoan, p.ABLoan, p.LCID, p.ApplicationAmount, p.Tolerance, p.LCExpireDate, p.UserID, p.EmailComments, p.BeneficiaryName, p.MemoAvailability, p.AppID);

                    clientsObservable.push(clients);
                });

            },
            error: function (xhr, textStatus, errorThrown) {
                var err = eval("(" + xhr.responseText + ")");
                amplify.store("ErrorDetails", err.exceptionMessage);


                router.map([
                    { route: 'ErrorPage', moduleId: 'ErrorPage', title: 'ErrorPage', title: 'ErrorPage', nav: false }
                ]).activate

                router.navigate('ErrorPage');

            }
        });

        if (clientsObservable().length > 0) {
            return true;
        } else {
            return false;
        }


    };

Мне нужно, чтобы поле MemoAvailability было отформатировано в виде валюты.

1 ответ

Решение

Вам необходимо отформатировать поле в viewModel, knockoutJS предоставляет экстендеры, чтобы вы могли добавить дополнительные функции к наблюдаемой. Вы можете использовать очень распространенные деньги, наблюдаемые

или вы можете создать свой собственный расширитель базовый пример

ko.extenders.currency = function(target, precision) {
var result = ko.computed({
    read: function() {
        return target().toFixed(precision); 
    },
    write: target 
});

result.raw = target;
return result;
};

затем используйте его в вашей модели представления, как это

var MemoAvailability = ko.observable(MemoAvailability).extend({currency: 2});

Вы можете улучшить расширитель немного больше.

Другой подход заключается в том, что, возвращая Json с сервера, вы можете отформатировать это значение на сервере перед возвратом к клиенту.

Другие вопросы по тегам