Dies ist ein wirklich Nischen-Szenario, wo ich idealerweise eine Bindung für eine Eigenschaft haben muss, aber in der Lage zu wissen, wo diese Eigenschaft innerhalb der Wurzel lebt Modell ansehen.Wissen, wo Observable im Root-Modell in foreach/abcendant Bindings in Knockout lebt
So zum Beispiel können sagen, ich habe das Objekt:
{
id: ko.observable(1),
name: ko.observable("some user"),
groups: [
{ id: ko.observable(1), name: ko.observable("some group") },
{ id: ko.observable(2), name: ko.observable("some group") },
]
}
Hier ist das Problem, wenn ich Bindungen wie diese haben waren:
<div>
<!-- ko foreach: groups -->
<input data-bind="value: name, custom-binding: { property: name, other: foo }" />
<!-- /ko -->
</div>
Jetzt muss ich in der Lage sein zu lösen name
hier zu rootModel.groups[currentIndex].name
im Gegensatz zu nur name
. Derzeit glaube ich nicht, dass es eine Möglichkeit gibt, in der Bindung zu wissen, dass die Eigenschaft "name"
ist, da es nur den Wert sieht, also muss ich dies als Zeichenfolge übergeben oder ein benutzerdefiniertes Attribut für das Objekt, das die Bindung enthält schaut nach. Wie auch immer, ich muss in der Lage sein, den Eigenschaftspfad für jede Observable (im Zusammenhang mit dem in seinem Gültigkeitsbereich verwendeten rootModel) im Rahmen der Bindung irgendwie zu erhalten.
Ich weiß, es scheint verrückt, und es ist, aber es ist immer noch etwas, was ich tun müssen, wenn überhaupt möglich. Daher ist foreach nur ein Szenario, bei dem sich der untergeordnete Bindungsbereich ändert und für alle Szenarios, die ich erstellen muss, um eine property-path
für Eigenschaften zu erstellen, die mit dieser benutzerdefinierten Bindung verwendet werden, umgebrochen wird.
Also gibt es eine Möglichkeit, dies zu tun?
ich nicht vollständig verstehen:
Dies wird genutzt die frage, aber könnte der ko.contextFor (element) helfer dich näher an dein ziel bringen? Und wie du schon sagtest, sollte "property" definitiv eine Zeichenkette sein. –
Hey 'contextFor (element)' bietet Ihnen nur die gleiche Art von Kontext, den Sie innerhalb der Bindungen erhalten, also seine gesamten Objektwerte, nicht die Eigenschaftsnamen oder irgendetwas (und in den meisten Fällen brauchen Sie keine Eigenschaftsnamen). – Grofit