Uczę się KnockoutJS, ale nie rozumiem różnicy między używaniem $root
i $parent
. Proszę zobaczyć this jsfiddle lub poniższy kod:
<div data-bind="foreach:mainloop">
$data Value: <span data-bind="text:$data.firstName"></span>
<span data-bind="text:$data.lastName"></span> --(1)
<br/>
$parent Value: <span data-bind="text:firstName"> </span>
<span data-bind="text:$parent.lastName"></span>
<br/>
$root Value: <span data-bind="text:firstName"></span>
<span data-bind="text:$root.lastName"></span>
<br/>
<hr/>
</div>
var mainLoopModel = function() {
var self = this; // Root Level scope
self.mainloop = ko.observableArray([{
'firstName': 'jhon'
}, {
'firstName': 'sam'
}]);
self.lastName = ko.observable('peters');
/*if you remove $data before lastName in note (1) you get undefined error because because mainloop dont have lastName root model has lastName so you have to access using parent or higher level */
}
ko.applyBindings(new mainLoopModel());
W powyższym kodzie $root
i $parent
są zarówno używane w tym samym celu: aby odnieść zewnętrzną zmienną zakresu. Chciałbym tylko wiedzieć, czy jest jakaś różnica między użytecznościami $root
i $parent
? Jeśli tak, pomóż mi zrozumieć z dobrym przykładem prawidłowego użycia.
Możesz mieć wiele poziomów rodziców/przodków (np. "Foreach" wewnątrz "foreach"). '$ rodzic' jest * bezpośrednim rodzicem *,' $ root' jest * najbardziej zewnętrznym rodzicem *. – DCoder
Dokumentacja nokautów jest całkiem dobra, przeczytaj odpowiednią sekcję: Wiążący kontekst http://knockoutjs.com/documentation/binding-context.html – nemesv