मैं नॉकआउट के साथ कुछ जटिल बाध्यकारी करने की कोशिश कर रहा हूं (कम से कम मेरे जैसे नौसिखिया के लिए)।knockout.js रिकर्सिव बाइंडिंग
निम्न डेटा पर विचार करें:
var originalData = {
id: 1,
name: "Main",
children: [ { id: 2, name: "bob", children: []}, { id: 3, name: "ted", children: [{id: 5, name:"albert"}, {id: 9, name: "fred"}]} ],
selectedChild: { id: 2, name: "bob" }
};
<table>
<tr>
<td data-bind="text: name"></td>
</tr>
<tr data-bind="if: children().length > 0">
<td>
<select data-bind="options: children,
optionsText: function(item){
return item.name;
},
optionsCaption: 'Choose...'"></select>
</td>
</tr>
ठीक है, कि आसान हिस्सा था।
कठिन हिस्सा यह है कि जब भी किसी आइटम को सूची में चुना जाता है, यदि इस आइटम में बच्चे हैं तो नीचे एक नया चयन बॉक्स दिखाई देना चाहिए। इसका डेटासेट पहले चयनित बॉक्स में चयनित आइटम के बच्चे होंगे। बेशक, यह किसी भी स्तर की गहराई के साथ जारी रख सकता है।
मुझे इस समस्या को नॉकआउट के साथ कैसे हल करना चाहिए? http://jsfiddle.net/graphicsxp/qXZjM/
एक विचार है कि मेरे दिमाग में आता है, अंदर ही सलेक्ट बॉक्स के साथ एक टेम्पलेट का उपयोग करें और जब बच्चों के साथ एक आइटम का चयन किया गया है तालिका तत्व है कि टेम्पलेट संलग्न करने के लिए है। यह अभी तक स्पष्ट नहीं है कि मैं इसे कैसे करने जा रहा हूं लेकिन क्या आपको लगता है कि मैं सही रास्ते पर हूं? – Sam