2012-06-07 13 views
6

मुझे डब्ल्यूसीएफ से डेटा प्राप्त होता है और इसे एक टेबल पर बांधता है। मुझे इस मंच में कुछ गणना क्षेत्रों को जोड़ने में मदद मिली है और सब कुछ पूरी तरह से काम करता है। मैं इस तालिका के पाद लेख पर कुल जोड़ना चाहता हूं। मेरे पृष्ठ का एक साधारण संस्करण http://jsfiddle.net/qeUHd/3/ पर देखा जा सकता है। असल में मैं सीखना चाहता हूं कि मेरे व्यूमोडेल में कोई फ़ील्ड कैसे जोड़ना है जो मेरे नमूना "राशि" में एक और फ़ील्ड के योग का परिणाम है। किसी भी तरह की सहायता का स्वागत किया जाएगा। http://jsfiddle.net/qeUHd/3/नॉकआउट गणना राशि

उत्तर

11

अपने पहेली में, आप अपने डेटा सेट को self.model पर मैप कर रहे हैं, इसलिए self.model observableArray है। चूंकि यह मामला था, इसलिए मुझे कुल मिलाकर computed value को एक साथ रखना होगा।

http://jsfiddle.net/qeUHd/5/

self.total = ko.computed(function(){ 
    var total = 0; 
    for(var p = 0; p < self.model().length; ++p) 
    { 
     total += self.model()[p].Amount(); 
    } 
    return total; 
}); 

तो बस यह करने के लिए बाध्य करने के लिए सुनिश्चित करें।

<td data-bind="text: total"> 

आप चीजों को एक छोटे से पिछड़े कर रहे हैं, लेकिन मुझे लगता है जिस तरह से आप अपने डेटा प्राप्त कर रहे हैं की वजह से है, तो मैं इसके साथ निपटा और पर ले जाया गया।

+0

धन्यवाद, मैं यहां विशेषज्ञों की भयानक टीम के लिए नॉकआउट लॉजिकल धन्यवाद को समझना शुरू करता हूं। –

1

जबकि मैं आम तौर पर इस तरह के गणना वाले क्षेत्रों को दृश्य मॉडल में डालने की सलाह देता हूं और समर्थन करता हूं (जैसा आमतौर पर वे संबंधित होते हैं), ऐसे समय होते हैं जहां आप डेटा के साथ काम कर रहे हैं जहां अतिरिक्त गणना गुणों को जोड़ना मुश्किल होता है। एक उदाहरण होगा यदि आप दृश्य में अपने डेटा को समूहीकृत कर रहे हैं। उस स्थिति में, आप अभी भी अपना कुल प्रदर्शित कर सकते हैं, लेकिन गणना को दृश्य में ले जाएं:

<td data-bind="text: $data.reduce(function(x,y) { return x + y.Amount(); }, 0)"></td>