我需要帮助的格式使用淘汰赛数据绑定(I need help formatting a data-bi

2019-09-20 13:30发布

我是相当新的淘汰赛,我正在寻找方法来格式化输出。 我看到这是这样的,但当然,我的尝试是不工作的例子。

这里是链接到的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>

Answer 1:

你可以考虑使用一个计算观察到:

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>


Answer 2:

如果你想要一个更通用的解决方案,你可以做这样的事情

(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());

http://jsfiddle.net/5H5AK/

编辑:不要使用真正的选项,你可以提供的选项字面一个对象,并使用从isCurrency扩展



文章来源: I need help formatting a data-bind using Knockout
标签: knockout.js