Ich lerne Knockout und dies ist mein erstes Beispiel dafür, also sei bitte sanft.Wie bekomme ich diese einfache One-Way-Bindung mit Knockout zur Arbeit?
Ich möchte nur eine unidirektionale Bindung vom Modell zu den Textfeldern, d. H. Was auch immer im Modell ist, muss in den Textfeldern angezeigt werden. Ich möchte noch keine Observablen erstellen. Hier
ist, was ich habe, aber wenn ich diesen Code ausführen, die Textfelder enthalten nicht die Modellwerte, und die Konsole meldet einen Fehler:
TypeError: c is null
Hier ist mein Code:
1.html
<html>
<head>
<meta charset="utf-8"/>
<script type='text/javascript' src='knockout-3.4.0.js'></script>
<script type='text/javascript' src='1.js'></script>
</head>
<form id = "frm" name = "frm">
<fieldset>
<legend>Your friend's basic information</legend>
<div>
<label for = "FirstName">First Name</label>
<input type = "text" name = "FirstName" id = "txtFirstName" data-bind = "value: friend.firstName" />
</div>
<div>
<label for = "LastName">Last Name</label>
<input type = "text" name = "LastName" id = "txtLastName" data-bind = "value: friend.lastName" />
</div>
</fieldset>
</form>
</html>
1.js
var model =
{
friend :
{
firstName : 'Sathyaish',
lastName : 'Chakravarthy'
}
};
ko.applyBindings(model);
Es sieht aus wie knockout ist nicht in der Lage, eine verschachtelte Eigenschaft zu binden. Da die Eigenschaft, an die ich bin, nicht direkt ein Mitglied des Objekts model
ist, sondern stattdessen in model.friend
verschachtelt ist, kann sie nicht gebunden werden.
Sicher kann es nicht sein, dass ich kein hierarchisches Modell haben kann und dass ich nur binden kann, wenn die Eigenschaften Top-Level-Mitglieder des model
Objekts sind?
Ich mache wahrscheinlich etwas falsch mit der Syntax.
Vielen Dank. 4 Minuten vor dem grünen Checkie. :-) –
@ WaterCoolerv2, gern geschehen. Sollte es jetzt akzeptieren können) –