2012-03-31 7 views
1

Vorwort

Ich habe selten jemals ein JS-Entwickler gewesen und dies ist mein erster Versuch, etwas mit Knockout.js tun. Die folgende Frage zeigt wahrscheinlich beide Punkte.

Backgound

ich eine ziemlich komplexe MVC3 Anwendung, die ich versuche, mit KO (V2.0.0.0) an die Arbeit. Meine MVC App wurde entwickelt, um allgemein zu steuern, welche Felder in der Ansicht angezeigt werden (und , wie sie der Ansicht hinzugefügt werden). Es verwendet Teilansichten, um basierend auf den Berechtigungen des Benutzers zu entscheiden, was in der Ansicht gezeichnet werden soll. Wenn der Benutzer in Gruppe A ist, zeigt er Steuerelement A an, wenn der Benutzer in Gruppe B dann das Steuerelement B oder möglicherweise anzeigt in Gruppe A die Kontrolle überhaupt nicht enthalten). Außerdem ist mein Modell sehr flach, also bin ich nicht sicher, dass die eingebaute Fähigkeit, mein ViewModel auf einen bestimmten Teil der Ansicht anzuwenden, helfen wird.

Meine Lösung für dieses Problem besteht darin, eine Aktion in meinem Controller bereitzustellen, die mit einem Objekt im JSON-Format antwortet, das den JQuery-Selektor und den dem Attribut "data-bind" zuzuordnenden Inhalt enthält und das ViewModel an das Objekt bindet Zeigen Sie im Ereignis $(document).ready mit den angegebenen Werten an.

Proof-of-concept Fehlgeschlagen

Mein erster Versuch, zu beweisen, dass dies funktioniert scheint nicht wirklich, zu arbeiten und durch „funktioniert nicht“ Ich meine es nicht bindet nicht nur die Werte überhaupt (wie in this jsfiddle gesehen werden kann). Ich habe es mit der applyBindings innerhalb der ready Veranstaltung versucht und nicht, aber es scheint nicht, einen kleinen Unterschied zu machen.

Frage

Was mache ich falsch? Oder ist das einfach nicht etwas, das mit KO funktionieren kann (obwohl ich mindestens ein Beispiel gesehen habe, das online dasselbe macht und es angeblich funktioniert)?

Wie ich im Vorwort gesagt habe, habe ich immer nur so getan, dass ich ein JS-Entwickler bin (obwohl ich es in der Vergangenheit normalerweise zur Arbeit gebracht habe), also weiß ich nicht, wo ich anfangen soll was ich falsch mache. Hoffentlich ist das keine echte Noob-Frage.

Antwort

3

Sind Sie sicher, dass Sie auf die Knockout-Bibliothek verwiesen haben? Ich habe deine Geige, indem einfach Referenzierung Knockout zu arbeiten:

fiddle

In Ihrer eigenen Seite können Sie das Script-Tag tun, so:

<script src="pathToKnockoutJsFileOnYourServer" type="text/javascript"></script> 
+0

Ich hätte schwor ich den Hinweis hinzugefügt. Ich bin mir nicht sicher, was genau passiert ist, aber du hast absolut recht. Danke für Ihre Hilfe. –

+0

Wenn Sie gefunden haben, dass es in Ihrem realen Projekt nicht funktioniert, dann sollten Sie auch die Anweisung 'applybinding' nach Ihrem' $ ("# lastName") setzen. Attr ("Datenbindung", "Wert: Nachname"); ' –

+0

@green - Danke für den Tipp. Ich werde das tun. Du meinst innerhalb des 'bereiten' Ereignisses, richtig? –