knockout.js - Ruft ViewModel vom DOM-Element ab


83

Ist es möglich, das gebundene ViewModel-JavaScript-Objekt von einem bestimmten DOM-Element abzurufen?

ko.applyBindings( gLoginViewModel, document.getElementById("login-form") );
ko.applyBindings( gLoginViewModel, document.getElementById("register-form") );

und irgendwo anders - in eher nicht verwandtem Code - so etwas:

var viewModel = ko.getViewModel( formElement );
viewModel.someObservable( someData ); // observable available in all ViewModels

Es wäre sogar besser, wenn ich so etwas tun könnte:

var viewModel = ko.getViewModel( someChildElement );

Antworten:


137

Knockout verfügt über zwei Dienstprogrammmethoden , die hier hilfreich sein können.

  • ko.dataFor gibt das ViewModel zurück, an das das Element gebunden ist.
  • ko.contextForGibt den "Bindungskontext" des aktuellen Elements zurück. Das Objekt, das Sie von dieser Methode zurückerhalten, gibt Folgendes zurück:

    { 
        $data: ...,
        $parents,
        $root
    }

Wenn ich Ihre Frage verstehe, können Sie sie wahrscheinlich ko.dataForhier verwenden. Hier ist ein einfaches Beispiel mit dataFor.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.