टी एल; डीआर/त्वरित फिक्स
अंतर्निहित सरणी प्राप्त करने के लिए observableArray
निष्पादन के रूप में निष्पादित करें, तब इसकी लंबाई प्राप्त करें:
<!-- ↓↓ -->
myObsArray's length is: <span data-bind="text: myObsArray().length"></span>
क्यों होता है?
मुझे एक जवाब है कि @kendaleiv's solution के अलावा कुछ विवरण प्रदान करता है प्रदान करते हैं, और यह कि यह भी एक अत्यधिक संबंधित सवाल मैं कितने लोगों ने महसूस जवाब देता है:
क्यों करता myObsArray.length
हमेशा वापसी 0 (शून्य)?
ऐसे परिदृश्य का एक विशिष्ट रेप्रो इस होगा:
ko.applyBindings({ myObsArray: ko.observableArray(["one", "two", "three"]) });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
myObsArray.length = <span data-bind="text: myObsArray.length"></span>
टुकड़ा कहते हैं, "लंबाई = 0", बजाय "लंबाई = 3" की।
यहां ध्यान देने योग्य महत्वपूर्ण बात: ko.observableArray
एक फ़ंक्शन है ...जो एक फ़ंक्शन देता है।
यह सही है: यदि आप एक चर या सदस्य को इसके बारे में परिणाम असाइन करते हैं, उदाहरण में myObsArray
जैसे कि चर एक समारोह के लिए एक संदर्भ हो जाएगा। तो अगर आप के लिए
myObsArray.length
पूछ रहे हैं तो आप वास्तव में the Function.length
property के लिए पूछ रहे हैं: तर्क समारोह लेता है कि की संख्या। ko.observableArray
से लौटाए गए फ़ंक्शन के लिए यह 0 (शून्य) होगा।
कैसे क्या हम इसे ठीक करते हैं?
अन्य उत्तरों में दिए गए फिक्स ठीक है, मुझे यहां इस उत्तर के उदाहरण के साथ दोहराएं। की "सरणी पालन किया जा रहा" लंबाई पाने के लिए आपको की जरूरत आह्वान समारोह कहा सरणी प्राप्त करने के लिए, और तो इसकी लंबाई मिलती है:
ko.applyBindings({ myObsArray: ko.observableArray(["one", "two", "three"]) });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
myObsArray.length = <span data-bind="text: myObsArray().length"></span>
अंत में , एक फुटनोट के रूप में, ओपी का कोड कुछ बराबर है:
myObsArray.length()
यह उपरोक्त फ़ंक्शन। लम्बाई गुण पाएगा और इसे फ़ंक्शन के रूप में निष्पादित करने का प्रयास करेगा (जो यह नहीं है), और 0 वापस नहीं लौटाएगा बल्कि बदले में क्रैश होगा। एक समारोह के रूप में length
का आह्वान न करने के लिए सावधान रहें, लेकिन देखने योग्य। सदस्य चर के रूप में हमेशा length
का आह्वान करें।
क्या/क्या/इसे बदला जा सकता है?
केओ के डेवलपर्स पर बहुत जल्दी इस मुद्दे पर विचार किया गया; Github issue no 4 के आरंभ में। यह मुद्दा उन चीजों को समझाता है जिन्हें मैंने ऊपर कवर करने की कोशिश की है, और यह भी दिखाता है कि अंत में इसे बदलने के लिए बहुत कुछ नहीं किया जा सकता था।
वाह, मुझे विश्वास नहीं है कि मैंने इसे नहीं देखा है। सहायता के लिए धन्यवाद। –
इसे चेक आउट करें: http://jsfiddle.net/TuRrs/5/, यदि आप रुचि रखते हैं तो एक कस्टम बाइंडिंग 'मुद्रा टेक्स्ट' जोड़ा। – kendaleiv
बहुत बहुत धन्यवाद, मैं इसे देख लूंगा। –