2012-06-11 15 views
80

फ़ॉकैच बाइंडिंग का उपयोग करके टेम्पलेट में, knockout.js 2.1.0 में, आप $ index() फ़ंक्शन के बावजूद वर्तमान आइटम की अनुक्रमणिका तक पहुंच सकते हैं। एक नेस्टेड फोरैच बाध्यकारी में, क्या टेम्पलेट से $ माता-पिता की अनुक्रमणिका तक पहुंचने का कोई तरीका है?

var application = { 
    topModel: [ 
    { 
     {subModel: [{'foo':'foo'}, { 'bar':'bar'}]}, // this has top:0 and sub:0 
     {subModel: [{'foo2':'foo2'}, { 'bar2':'bar2'}]} // this has top:0 and sub:1 
    }, 
    { 
     {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:1 sub:0 
    }, 
    { 
     {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:0 
     {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:1 
    }, 
    ... 
    ]}; 
इस के साथ

, मैं, एक मॉडल के लिए पथ मुद्रित करने के लिए सूचकांक का उपयोग कर चाहते हैं:

मैं इस तरह एक डेटा संरचना है कहो, [topmodel सूचकांक उप-मॉडल सूचकांक] ताकि उत्पादन होगा कुछ की तरह:

[0 0] 
[0 1] 
[1 0] 
[2 0] 
[2 1] 
... 

मैं foreach का उपयोग कर मॉडल बाध्य है, लेकिन मैं कैसे उप-मॉडल के संदर्भ में topmodel के सूचकांक का उपयोग करने की समझ नहीं कर सकते हैं। निम्न उदाहरण एक दृष्टिकोण दिखाता है जिसकी मैंने कोशिश की है, लेकिन यह काम नहीं करता है, क्योंकि मैं यह नहीं समझ सकता कि $ parent parentrer की अनुक्रमणिका का उपयोग कैसे करें।

<!--ko foreach: topModel --> 
<!--ko foreach: subModel --> 
    [<span data-bind="text: $parent.index()"></span> 
    <span data-bind="text: $index()"></span>] 
<!--/ko--> 
<!--/ko--> 

प्रिंट आउट करना चाहिए: 0 1, 0 2, 1 0, 1 1, 1 2, 2 0, 2 1, ...

+0

आपको वास्तव में '$ सूचकांक 'के बाद'() 'की आवश्यकता नहीं है। –

+0

इसके अलावा, यदि आप अपने पास जो कुछ भी बनाते हैं, तो यह आसान हो जाएगा। या अपना डेटा स्रोत पोस्ट करें और मॉडल कोड देखें। –

+0

अभी तक, मैं केवल प्रोटोटाइप पर काम कर रहा हूं, इसलिए मेरे पास दिए गए उदाहरण से कहीं अधिक नहीं है। हालांकि, मैं अन्य दृष्टिकोणों का उपयोग करके सुझावों के लिए खुला हूं। –

उत्तर

165

पैरेंट ऑब्जेक्ट उपयोग के सूचकांक का उपयोग करने की

$parentContext.$index() 

बजाय

$parent.index() 
+0

बढ़िया! वह जगह पर था :) –

+0

धन्यवाद। बस उस उम्र को खोजने की कोशिश कर बिताया! – DavidHyogo

+13

हालांकि, दिमागहीनता के नाम पर अत्यधिक स्पष्ट होने के बावजूद, आपको अभी भी माता-पिता के साथ $ $ parentContext। $ अनुक्रमणिका() 'होना चाहिए। ; ^) $ पेरेंट कॉन्टेक्स्ट पर थोड़ा और [यहां] (http://www.appliness.com/10-things-to-now-about-knockout-js-on-day-one/), fwiw। मूल प्रश्न पर मैथ्यू की टिप्पणी के अनुसार – ruffin

2

सबसे आसान तरीका है आप पता कर सकते क्रोम के लिए डाउनलोड "नॉकआउट संदर्भ" है। यह आपको दिखाता है कि कौन सा डेटा किस तत्व से जुड़ा हुआ है और आपको उस विशेष बाध्य तत्व को उपलब्ध फ़ंक्शंस/वेरिएबल्स देखने देता है। यह इस तरह की स्थितियों के लिए एक अद्भुत उपकरण है।

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