2016-08-05 43 views
1

Ich habe auf RxSwift bemerkt GitHub Login Example dass Observablen aus dem Viewcontroller in das Ansichtsmodell bei der Initialisierung übergeben werden:Wo sind Observables in MVVM zu binden?

let viewModel = GithubSignupViewModel1(
      input: (
       username: usernameOutlet.rx_text.asObservable(), 
       password: passwordOutlet.rx_text.asObservable(), 
       repeatedPassword: repeatedPasswordOutlet.rx_text.asObservable(), 
       loginTaps: signupOutlet.rx_tap.asObservable() 
      ), 
      dependency: (
       API: GitHubDefaultAPI.sharedAPI, 
       validationService: GitHubDefaultValidationService.sharedValidationService, 
       wireframe: DefaultWireframe.sharedInstance 
      ) 
     ) 

Ist dies der richtige Weg, um die Bindung des Login tippen und Textfelder in reaktiver Programmierung?

Bevor ich dieses Beispiel gesehen habe, habe ich eine Funktion in meinem ViewModel onSignUpClick() erstellt und von den View Controller-gebundenen Klicks, um diese Funktion auszuführen. Ist das eine schlechte Form?

Scheint, wie wenn alles durch die init übergeben wird es in einer sehr fett init-Funktion führt

Antwort

1

Es ist schwer zu sagen, wenn Ihr vorheriger Ansatz schlechte Form ist oder nicht, aus nur einem Satz. Wie hat die View-Model-Funktion Zugriff auf die Feldwerte? Wie hat es ein Ergebnis an den View-Controller zurückgegeben? Um eine angemessene Antwort zu geben, müssten wir Code sehen.

Wie für die "Fett init", könnte es persönliche Vorlieben sein, aber ich sehe kein Problem damit. Auf die eine oder andere Art werden diese Eingaben irgendwo behandelt. Also eine Zeile in der init scheint für einen View-Controller am Ende ziemlich schlank zu sein.