我是Knockout的新手,我正在寻找格式化输出的方法。我看到一个类似这样的例子但当然我的尝试没有用。
以下是jsfiddle的链接:http://jsfiddle.net/cezmp/
<div id="VMDiv">
<table>
<thead>
<tr>
<th>Raw</th>
<th>Formatted</th>
</tr>
</thead>
<tbody>
<tr>
<td data-bind="text : SomeData "> </td>
<td data-bind="text : formatPercent(SomeData())"> </td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
function formatPercent(value) {
return value.toFixed(2) + "%";
}
function vm() {
var self = this;
self.SomeData = ko.observable(62.1795972898);
}
ko.applyBindings(new vm(), document.getElementById("VMDiv"));
</script>
答案 0 :(得分:7)
您可以考虑使用计算的observable:
div id="VMDiv">
<table>
<thead>
<tr>
<th>Raw</th>
<th>Formatted</th>
</tr>
</thead>
<tbody>
<tr>
<td data-bind="text : SomeData "> </td>
<td data-bind="text : SomeDataFormatted"> </td>
</tr>
</tbody>
</table>
</div>
<script type="text/javascript">
function vm() {
var self = this;
self.SomeData = ko.observable(62.1795972898);
self.SomeDataFormatted = ko.computed(function(){
return self.SomeData().toFixed(2) + "%";
});
}
ko.applyBindings(new vm(), document.getElementById("VMDiv"));
</script>
答案 1 :(得分:5)
如果你想要一个更通用的解决方案,你可以做这样的事情
(function () {
ko.extenders.isCurrency = function (target, options) {
var result = ko.dependentObservable({
read: function () {
return Globalize.format(target(), "c");
},
write: target
});
result.raw = target;
return result;
};
} ());
ViewModel = function() {
this.cashIsKing = ko.observable(565345.56435535).extend({ isCurrency: true});
};
ko.applyBindings(new ViewModel());
编辑:您可以提供带有选项的对象文字,并使用来自isCurrency扩展程序的对象文字,而不是使用true作为选项