0

我的以下页面运行良好(我已经删除了一些其他字段和样式以使我在此处发布的示例保持较小)。我希望将表中的 Premium 行(第 17 行)格式化为货币 (USD)。这样做的最佳方法是什么?

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div class="datagrid" >
        <table >
            <thead>
                <tr>
                    <th>Location Name</th>
                    <th>Location Total</th>
                </tr>
            </thead>
            <tbody data-bind="foreach: { data: Locations, as: 'location' }">
                <tr>
                    <td><span data-bind="text: location.LocationName" /> </td>
                    <td><span data-bind="text: location.Premium" /> </td>
                </tr>
            </tbody>
        </table>
    </div>

    <script>
        $(document).ready(function ()
        {
            var appViewModel 

            // AppViewModel
            function AppViewModel()
            {
                this.Locations = ko.observable([]);
            }
            var appViewModel = new AppViewModel();

            ko.applyBindings(appViewModel);

            $.getJSON("http://waltweb01:85/LTCEPLWS/LTCJSON.svc/getLTCWithIDs/4", function (data)
            {
                incomingData = data;
                appViewModel.Locations(data.getLTCWithIDsResult.Locations);
            });
        });
    </script>
</asp:Content>
4

2 回答 2

3

答案隐藏在评论中,为了让未来的读者更容易,这里有一个答案。

将您的 HTML 代码更改为:

<td><span data-bind="text: formatCurrency(location.Premium())" /> </td>

然后添加 javascript formatCurrency() 函数:

var formatCurrency = function (amount) {
    if (!amount) {
        return "";
    }
    amount += '';
    x = amount.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return "$" + x1 + x2;
}
于 2015-08-13T00:10:38.157 回答
0

Knockout 有这些称为扩展器的东西,我认为它们在这些情况下很有用。该示例用于舍入,但设置它以添加美元符号或转换货币很容易。通过这种方式,您还可以在站点的其他区域使用扩展器,这些区域也需要转换/格式化为美元。

于 2014-02-25T14:21:33.407 回答