2012-08-01 7 views
5

का उपयोग करके डेटा-बाइंड स्वरूपण करने में सहायता चाहिए, मैं नॉकआउट के लिए बिल्कुल नया हूं और मैं आउटपुट प्रारूपित करने के तरीके की तलाश में हूं। मैंने एक उदाहरण देखा जो ऐसा कुछ था लेकिन निश्चित रूप से मेरा प्रयास काम नहीं कर रहा है। 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> 

उत्तर

7

आप का उपयोग कर एक गणना नमूदार विचार कर सकते हैं:

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> 
+0

यह काम करेंगे, लेकिन मेरे उपयोग के मामले के लिए आदर्श नहीं से कर सकते हैं। मुझे यह Knkockout साइट पर मिला। http://knockoutjs.com/examples/cartEditor.html इसमें एक उदाहरण है जैसे मैं चाहता था लेकिन मुझे अभी भी मेरे कोड को सही तरीके से काम करने में समस्याएं हैं। मैं दूर रहना जारी रखूंगा। – Jim

+0

बस एक त्वरित उदाहरण के रूप में यह कैसे flaky है। मैंने एक और सरल jsfiddle बनाया http://jsfiddle.net/cezmp/1/ यह उपरोक्त कार्ट एडिटर डेमो का एक अलग संस्करण है। यह jsfiddle में काम नहीं करता है लेकिन यह मेरी साइट पर मेरे टेस्ट एचटीएमएल पेज पर "तरह का" काम करता है। – Jim

+0

ऊपर दिए गए मेरे उदाहरण पर एक नज़र डालें, गणना की गई अवलोकन योग्य स्वरूपण करती है और फिर सीधे आपके तत्व के पाठ में डाटाबेस होती है। यहां आपके पहेली के लिए एक अपडेट है: http://jsfiddle.net/cezmp/3/ – KodeKreachor

5

आप एक अधिक सामान्य समाधान चाहते हैं तो आप इस

की तरह कुछ कर सकते हैं

यहाँ jsfiddle के लिए लिंक है

(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 एक्सटेंडर