2013-08-28 11 views
5

के बीच नॉकआउट अंतर ऐसा लगता है कि मैं अपने दृश्य मॉडल पर एक ही परिणाम के साथ दो तरीकों से एक फ़ंक्शन लिख सकता हूं।सामान्य जावास्क्रिप्ट फ़ंक्शन और गणना की गई

सामान्य जावास्क्रिप्ट समारोह:

vm.Texts = function() { 
    var self = vm; 
    if (self.selectedFormat()) { 
    return self.selectedFormat().Texts(); 
    } 
}; 

ko अभिकलन:

vm.Texts = ko.computed(function() { 
    var self = vm; 
    if (self.selectedFormat()) { 
    return self.selectedFormat().Texts(); 
    } 
}); 

'वीएम' दृश्य मॉडल और selectedFormat है दृश्य मॉडल पर एक मानने योग्य है। चयनित होने पर दोनों मामलों में फ़ॉर्मेट फ़ंक्शन ट्रिगर होता है। तो मेरा सवाल यह है कि दो तरीकों के बीच क्या अंतर है?

<span data-bind="text: Texts()"></span> 

निष्कर्ष:

+0

अपने एचटीएमएल में आप अपने 'टेक्स्ट्स' फ़ंक्शन का उपयोग कैसे कर रहे हैं? – nemesv

उत्तर

4

मैं एक डेटा-बाइंडिंग इन पंक्तियों के साथ मान रहा हूँ
दोनों ही मामलों में text बाध्यकारी प्रारंभिक प्रतिपादन पर selectedFormat पर निर्भरता पैदा करेगा।


विवरण:

  1. समारोह मामले:
    अपने स्थितियों के दोनों span क्योंकि अद्यतन करेगा। text बाध्यकारी प्रारंभिक प्रतिपादन पर ध्यान देगा कि selectedFormat पर निर्भरता है क्योंकि इसे आपके फ़ंक्शन में बुलाया जा रहा है। यदि अवलोकन करने योग्य कभी भी बदलता है तो यह केओ के रजिस्टरों में निर्भरता पायेगा और text बाध्यकारी पर एक अद्यतन ट्रिगर करेगा। निर्भरता इस तरह दिखता है:

    text binding --> depends-indirectly-on --> selectedFormat

    this fiddle देखें।

  2. गणना केस। दूसरा मामला वही काम कर सकता है, हालांकि यह थोड़ा और स्पष्ट है, क्योंकि Texts अब एक (गणना) पर निर्भर है जो selectedFormat पर मध्यस्थ के रूप में कार्य करता है। निर्भरता है:

    text binding --> depends-on --> Texts computed --> depends-on --> selectedFormat

    this fiddle देखें।

संबंधित मुद्दे