2013-04-12 6 views
9

मैं संरक्षित अवलोकन के साथ knockoutjs का उपयोग कर रहा हूं और चेकबॉक्स के साथ कोई समस्या है। संरक्षित अवलोकनों का एक कार्यान्वयन here पाया जा सकता है लेकिन कई ऐसे हैं जो मैंने देखा है जो बहुत समान हैं।चेकबॉक्स के साथ देखे जा सकने वाले नॉकआउटज का उपयोग कैसे करें?

एक जेएसफ़िल्ड जो मेरी समस्या का प्रदर्शन करता है here पाया जा सकता है। यहाँ बेवकूफ का एक हिस्सा है।

var ViewModel = function() { 
    var self = this; 

    self.protectedBool = ko.protectedObservable(true); 
    self.commit = function(){ 
     ko.commitProtectedObservables(self); 
    }; 
    self.rollback = function() { 
     ko.rollbackProtectedObservables(self); 
    }; 
}; 

$(function() { 
    ko.applyBindings(new ViewModel()); 
}); 

नकल करने के लिए, निम्न कार्य करें:

  1. भागो बेला (डिफ़ॉल्ट मान के लिए चेकबॉक्स सच है)
  2. को अनचेक करें
  3. पर क्लिक करें "प्रतिबद्ध"
  4. ध्यान दें कि मान अब झूठा दिखाता है (यह सही व्यवहार है)
  5. फिर से पहेली चलाएं (चेकबॉक्स के लिए डिफ़ॉल्ट मान सत्य है)
  6. को अनचेक करें तो इसे तुरंत जाँच "प्रतिबद्ध"
  7. क्लिक करें
  8. आप मूल्य के लिए झूठी/अनियंत्रित भले ही यह जब आप क्लिक जांच की गई स्थापित किया जाएगा देखेंगे ("प्रतिबद्ध" क्लिक करने से पहले) "कमिट "।

"लिखने" protectedObservable परिभाषा के अंदर गणना की नमूदार में घटना नहीं प्राप्त दूसरी बार आप चेकबॉक्स को बदलने और इस तरह जब मूल्य के लिए प्रतिबद्ध है, यह गलत मान करने से है निकाल दिया है।

यह भी ध्यान रखें कि संरक्षित ऑब्सर्जेबल स्ट्रिंग के लिए पूरी तरह से काम करता है। किसी भी मार्गदर्शन की काफी सराहना की जाएगी।

+0

मैं एक उचित जवाब अभी तक नहीं है। तो मैं सिर्फ एक टिप्पणी के रूप में यह बहुत हैकी कामकाज पोस्ट: http://jsfiddle.net/CyHyW/ – nemesv

+0

बढ़िया! जवाब के लिए धन्यवाद! – rhoadsce

+1

'संरक्षित ऑब्सर्वेबल' का कार्यान्वयन बहुत पुराना है। मुझे लगता है कि यह केवल केओ (<2) के पुराने संस्करण के साथ काम करता है। नए केओ के लिए एक ही लेखक (रयान निमेयर) द्वारा लागू संपादक पैटर्न का संदर्भ लें - http://www.knockmeout.net/2013/01/simple-editor-pattern-knockout-js.html –

उत्तर

11

protectedObservable का कार्यान्वयन बहुत पुराना है। यह केवल केओ (< 2) के पुराने संस्करणों के साथ काम करता है।

नई KO संस्करणों के लिए संपादक पैटर्न एक ही लेखक (रयान नीमेयेर) द्वारा लागू उल्लेख - http://www.knockmeout.net/2013/01/simple-editor-pattern-knockout-js.html

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

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