Wenn ich ein View-Modell mit Blick binden,Knockout js, Bindungskontext und View-Modell ist sehr verwirrend
html
<div data-bind="text: $data.name"></div>
javascript
var viewModel = {
name: ko.observable('Steve')
};
ko.applyBindings(viewModel);
Die div den Namen Steve zeigt . Der Bindungskontext enthält die Eigenschaft $ data, sie bindet den Namen im viewModel, auf den sich $ data mit dem Element div bezieht. Ich verstehe das. Aber was ich nicht verstehe, ist, dass, wenn ich $ Daten in der Datenbindung im Div-Tag entferne, es immer noch funktioniert. Ohne $ data, bezieht sich der Name nicht auf eine Eigenschaft direkt im Bindungskontext namens "name", die nicht existiert? was passiert unter der Haube in dem Fall, wenn $ Daten nicht vorhanden sind?
Der Bindungs Kontext das Viewmodel-Objekt ist. $ data bezieht sich auch auf das viewModel, weshalb es möglich ist, $ data in Ihrem Datenbindungsattribut wegzulassen. –
@MaheshWarrier. Der Bindungskontext für das Dokument ist ein Objekt, das spezielle Eigenschaften wie $ data, $ root enthält, wenn der Bindungskontext viewModel ist, dann sollte er diese Eigenschaften enthalten, was nicht der Fall ist. –
Knockout fügt diese Eigenschaften zu Ihrem Ansichtsmodell hinzu, wenn Sie applyBindings aufrufen. Wenn Sie wirklich ins Detail gehen wollen, können Sie in den Quellcode schauen: http://knockoutjs.com/downloads/knockout-3.4.0.debug.js. Insbesondere sollten Sie sich die Funktion applyBindings –