2011-11-14 6 views
51

इस कोड के साथ काम नहीं कर रहा (क्रोम में) त्रुटि फेंकता है: "नहीं मिला बंद करने टिप्पणी टैग से मिलान करने के लिए: ko foreach: MyPlans":Knockout.js containerless "foreach" <table>

<table> 
    <!-- ko foreach: MyPlans --> 
    <tr> 
     <td>Test</td> 
    </tr> 
    <!-- /ko --> 
</table> 

अगर मैं एक का उपयोग करें इसके बजाय सूची, सबकुछ काम करता है:

<ul> 
    <!-- ko foreach: MyPlans --> 
    <li> 
     Test 
    </li> 
    <!-- /ko --> 
</ul> 

मैं एक टेबल के साथ कंटेनरलेस फ़ोरैच का उपयोग करना चाहता हूं। क्या मैं कुछ गलत कर रहा हूं? क्या यह एक बग है?

उत्तर

87

यह इस तथ्य से संबंधित है कि ब्राउज़र tbody टैग स्वचालित रूप से सम्मिलित करते हैं, जो टिप्पणियों में एक मेल नहीं खाता है। गाया उत्पादन दिखेगा की तरह:

<table> 
    <!-- ko foreach: MyPlans --> 
    <tbody> 
    <tr> 
     <td>Test</td> 
    </tr> 
    <!-- /ko --> 
    </tbody> 
</table> 

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

<table> 
    <tbody data-bind="foreach: MyPlans"> 
    <tr> 
     <td>Test</td> 
    </tr> 
    </tbody> 
</table> 

यह एक मेज, कई tbody टैग नहीं है करने के लिए यदि आवश्यक हो तो कानूनी है।

+1

धन्यवाद! यह चीजों को थोड़ा सा साफ़ करता है। मैं निश्चित रूप से आगे बढ़ने के लिए वास्तविक मार्कअप की जांच करना सुनिश्चित करूँगा। – Jag

+0

आरपी का उल्लेख है कि एकाधिक 'tbody' टैग होने के लिए यह कानूनी है। समूह पंक्तियों के लिए यह उपयोगी है, [यहां] (http://www.w3.org/TR/html401/struct/tables.html#h-11.2.3) अधिक जानकारी है। –