Dem Knotout beobachtbare Werte werden dynamisch durch den String-Namen bestimmt

8

Ich habe zwei Fragen bitte:

Ich verwende knockout (ich bin ein KO noob sry) und ich möchte einer bestimmten Knockout-Observable bei einem click -Ereignis einen Wert zuweisen, der aber nur beim click -Ereignis selbst (und dem Wert I) bestimmt werden sollte wird an die Datenbinde übergeben = klick) ... kann es gemacht werden, bitte ... kann ich die knockout-beobachtbare Variable nur über ihren Namen (einen String-Wert) erhalten, anstatt wissen zu müssen, welches Observable ich sein werde vorher einen Wert zuweisen?

Und zweitens weniger wichtig, wenn eine solche Funktion ko.ObservableByName (stringName) existiert, ist es möglich, sie irgendwie zu verwenden und die Vorauswahl mehrerer ausgewählter Elemente beim Laden der Seite zuzuweisen ... und wie bitte?

Ich habe das versucht ... Ich habe data-bind="click: loadData.bind ($ data, param1 ", param2) verwendet ') " und dann bin ich in der Lage, diese param1 und param2 Zeichenfolgenwerte zu erhalten, indem ich einen Ereignishandler in meinem knockout viewmodel erstelle, der geht etwas entlang der Linie von:

%Vor%

Mein größtes Problem dabei ist, dass ich die Funktion mit bereits spezifizierten und fest codierten Observablen p1 / p2 konstruieren muss, aber wirklich möchte ich, dass param1 und param2 als Namen oder Referenzen namentlich verwendet werden von einigen meiner Observablen, die ich dann nach Belieben weitergeben konnte (neben einem Wert, der zugewiesen werden sollte, oder besser noch einem Observablen, würde ich gerne den Wert von dem ersten kopieren), und somit konnte ich Werte übergeben Rufen Sie in der Click-Funktion direkt zu einem Observable meiner Wahl auf (und haben Sie keine große Anzahl solcher kleinen Funktionen) ...

Vielleicht mache ich es falsch? Vielleicht sollte ich überhaupt keine String-Werte übergeben ... Vielleicht sollte ich versuchen, ein beobachtbares Objekt zu übergeben, aber wie kann man das innerhalb der Datenbindung machen, schreibst du einfach myViewModel.myObservable oder so ähnlich?

    
dada 18.01.2012, 04:08
quelle

1 Antwort

15

Wenn Sie Ihr übergeordnetes Objekt haben, können Sie mit dieser Syntax auf eine Observable zugreifen:

viewModel[observableName]

und setzen Sie den Wert wie folgt:

viewModel[observableName](newValue)

Hier ist ein Beispiel, in dem Sie den Eigenschaftsnamen aus einem Dropdown auswählen und den Wert entsprechend festlegen können, und einen weiteren, bei dem die Schaltfläche direkt an das Festlegen eines beobachtbaren Werts gebunden ist: Ссылка

    
RP Niemeyer 18.01.2012, 14:49
quelle