Knockout Komponenten Kommunikation

8

Ich habe eine Web-App, die ich mit Ko-Komponenten konvertieren und SPA verwenden möchte. Ich frage mich, wie man eine Art Kommunikation zwischen den Komponenten macht.

Zum Beispiel möchte ich eine "Benachrichtigungskomponente", in der jede einzelne Komponente Benachrichtigungen senden kann.

Ich habe eine Lösung gefunden, indem ich ein beobachtbares Array im Hauptansichtsmodell geteilt habe:

%Vor%

und

%Vor%

Siehe hier: Ссылка

Ich bin nicht vollständig mit dieser Lösung zufrieden, ich hätte lieber die Benachrichtigungsdaten in der Benachrichtigungskomponente behalten.

Hast du eine Idee, damit umzugehen?

    
rbag 08.10.2014, 07:52
quelle

1 Antwort

14

Sie können ko.subscribable verwenden, um einen einfachen Pub / Sub-Nachrichtenbus zu implementieren:

  • ko.subscribable.subscribe , um neue Nachrichten zu abonnieren
  • ko.subscribable.notifySubscribers um neue Nachrichten zu veröffentlichen

    Mehr dazu in diesem Artikel von Ryan Niemeyer.

In Ihrem Fall können Sie ein globales postbox -Objekt basierend auf ko.subscribable erstellen. Components veröffentlichen Nachrichten darin und Benachrichtigung vm abonniert es.

Sie können Nachrichten sogar nach Themen veröffentlichen und abonnieren.

Demo: JSFiddle

Postfach:

%Vor%

eine Komponente:

%Vor%

Hinweis:

%Vor%     
manji 08.10.2014, 09:40
quelle