2016-10-13 1 views
0

Ich versuche Knockout zu lernen.Ich versuche foreach Bindung in Knockout zu lernen.Wie schiebe ich Elemente zu Javascript-Objekt in Knockout

Zuerst erklärte ich ein Javascript-Objekt

var people = function() 
{ 
    var self = this; 
    this.firstname = ko.observable("") 
    this.lastname = ko.observable("") 
} 

Ich habe versucht, Elemente in die Javacript Objekt zu schieben

var x = new Menschen();

x.push({firstName: "bob" ,lastName:'gill'}); 

Ich habe Ansichtsmodell

function TestViewModel() 
{ 
var self = this;  
this.person = ko.observableArray({people});  

} 

eine Instanz von Viewmodel erstellt und schob die Elemente

var viewmodel = new TestViewModel(); 

viewmodel.person.push(x); 

binded Schließlich werden die Elemente

ko.applyBindings(viewmodel); 

Hier ist die JSFIDDLE ich versucht, erreichen e

http://jsfiddle.net/GSvnh/5592/

Ich möchte die folgende Ausgabe

firstname lastname 
bob   marley 
tom   brady 
George  clooney 
+1

'.push()' gilt für * Arrays *, aber 'x' ist * nicht * ein Array, es ist eine Instanz von' people'. – nnnnnn

+0

Es ist sehr unklar, was Sie versuchen zu tun. Hast du noch etwas anderes versucht? Hast du die Konsole in deinem Browser angeschaut? Der Fehler, den Sie jetzt bekommen, ist, dass Push keine Funktion ist. Sie haben keine Methode Push für Ihr Objekt "Personen" deklariert.Ich kann dir nicht sagen, was du genau ändern musst, bis du klar sagen kannst, was du zu tun versuchst. Momentan haben Sie nichts mit Knockout zu tun, sondern einfaches JavaScript. – peinearydevelopment

+0

@peinearydevelopment: Ich versuche, Array von Personen Objekte in Person und dann foreach binden, um alle Elemente im Array anzuzeigen – googleuser

Antwort

0

Sie haben ein paar Probleme in Ihrem JSFiddle Adresse:

  1. Ihre thead HTML fehlt ein Schließen >
  2. Als Benutzer nnnnnn erwähnt, versuchen Sie, zu einer Instanz von Pe zu gelangen ople, nicht das Array, das auf Ihre foreach gebunden ist
  3. Ihr Wert Bindungen Ihre Leute Eigenschaftsnamen nicht übereinstimmen (firstname vs firstName)

Hier ist eine aktualisierte JSFiddle, die ein basisches foreach Beispiel implementiert: http://jsfiddle.net/GSvnh/5593/

0

Um dies zu beantworten, folgen Sie einem Beispiel, in dem ich eine Menge von Informationen in einer Datenbasis habe, und ich werde es in eine Datentabelle in meinem Frontend schieben.

function tableData(){ 
<cfoutput> 
    var newDados = #serializeJSON(mySQLData)#; 
    var dataABC = newDados.ABC; 
    var dataXYZ = newDados.XYZ; 
    </cfoutput> 
    //cfoutput is a Cold Fusion parameter to receive data from SQL. 

In diesem Fall serialisiert ich newDados zu einem Objekt. ABC und XYZ sind Objekte Söhne von newDados.

In diesem Fall möchte ich beide untergeordneten Objekte in einem einzigen Objekt mischen und verschieben, um diese Parameter zusammen zu arbeiten. So verwende ich eine forEach Funktion:

allData = new Array(); 

    dadosABC.forEach(function(obj){ 
    allData.push(obj); 
    }); 
    XYZ.forEach(function(obj){ 
    allData.push(obj); 
    }); 
    //Here allData have already receiving data of both newDados object child 

    allDataSize = allData.length; 
    for (var i = 0; i < sizePreenc; i++) { 
    allData[i] = new Array(); 
    tableData[i].push(allData[i]); 
    tableData[i].push(allData[i].firstName); 
    tableData[i].push(allData[i].lastName); 
    tableData[i].push(allData[i].age); 
    tableData[i].push(allData[i].gender); 
    }; 
    drawGrid(''); 
}; 

So schiebe ich meine Daten zu Tisch, oder was auch immer ich will.

Verwandte Themen