Ich versuche diese rekursive Vorlage, aber ich bin bei dynamischen Datenrendern stecken. Meine Daten wie folgt aussieht:Rekursives Array in Knockout
[Object
Children: Array[2]
EventCategory: Object
]
Bisher habe ich diese Vorlage als pro jsfiddle Beispiel, aber wie zu überprüfen, ob das Array Kind?
<script id="categoryTemplate" type="text/html">
//How to check if data has child and display the child to its parent?
<li>
<span data-bind="text: name"></span>
<ul data-bind="template: { name: 'categoryTemplate', foreach: children }"></ul>
</li>
</script>
HTML-Darstellung:
<ul data-bind="template: {name: 'categoryTemplate', foreach: $data.categoryRoot}"></ul>
Knockout-Bindung, wie das Array zu machen?
var categoryElement = function (name, children) {
var self = this;
self.children = ko.observableArray(children);
self.name = ko.observable(name);
}
var categoryModel = {
categoryRoot: ko.observableArray()
};
var viewModel = function() {
var me = this;
me.categoryRoot = ko.observableArray();
me.selectCategory = function() {
$.get('link-to-get-categories').then(function(response) {
var categoryData = [
//new categoryElement("Russia", [
// new categoryElement("Moscow")
//]),
new categoryElement(response.Data)
//me.categoryRoot(categoryData);
me.categoryRoot(response.Data);
});
}
}
ko.cleanNode($('#addEvent')[0]);
ko.applyBindingsWithValidation(new viewModel(), $('#addEvent')[0]);
Sie einen Screenshot Ihrer Daten nicht veröffentlichen, dass nutzlos. Veröffentlichen Sie Ihre Daten. – Tomalak
Es zeigt nur, wie meine Datenstruktur aussieht – naru
Ich weiß, aber das Einfügen der * tatsächlichen Daten * ist unendlich viel nützlicher als ein statischer Screenshot Ihrer Browser-Konsole. Beim nächsten Mal posten Sie einfach Ihre Daten. – Tomalak