/ / knockout.js - 2d problémy viazania poľa - javascript, knockout.js, knockout-2.0

knockout.js - Problémy s väzbami na pole 2d - javascript, knockout.js, knockout-2.0

Chcem vytvoriť väzbu 2d poľa pomocou knockout.js

Chcem, aby generoval dáta založené na obsahu tohto 2d poľa, ale to nefunguje.

Po prvé, tu je môj knockout model

self.searchResults = ko.observableArray()

//Let"s populate some data so you know the structure of my array
self.searchResults = new Array("Network", "Devices")

self.searchResults["Network"] = new Array("1", "2");
self.searchResults["Devices"] = new Array("a", "b", "c");

Teraz mám toto v mojom html kóde:

<ul data-bind="foreach: searchResults">
<li data-bind="text:$data"></li>
<ul data-bind="foreach: $data">
<li data-bind="text: $data"></li>
</ul>
</ul>

Tu očakávam očakávaný výsledok:

<ul>
<li>Network</li>
<ul>
<li>1</li>
<li>2</li>
</ul>
<li>Devices</li>
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
</ul>

Problém je v tom, že prechádza písmenami, ktoré im ukazujú. Tu je príklad jsFiddle na demonštrovanie: http://jsfiddle.net/MMrpM/1/

odpovede:

4 pre odpoveď č. 1

Váš problém je čiastočne v tom, že ste "nastavili svoj knockout viditeľný nesprávne. V knockout musíte vzývať vašu pozorovateľnú hodnotu na získanie alebo nastavenie hodnoty:

// Get
var val = self.searchResults();

// Set
self.searchResults(val);

Rovnako tak JavaScript neumožňuje vytvárať a manipulovať s poliami tak, ako máte. Musíte skutočne vytvoriť pole objektov. Váš kód by mal byť v skutočnosti podobný:

self.searchResults = ko.observableArray();

//Let"s populate some data so you know the structure of my array
self.searchResults = [ { name: "Network", children: [] }, { name: "Devices", children: [] } ]

self.searchResults[0].children = ["1", "2"];
self.searchResults[1].children = ["a", "b", "c"];

Pozrite si, ako funguje v tomto jsfiddle: http://jsfiddle.net/dkqdw/