在哪里绑定 MVVM 中的可观察对象?

Where to bind observables in MVVM?

我在 RxSwift 上注意到 GitHub Login Example 可观察对象在初始化时从 ViewController 传递到 ViewModel 中:

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
            )
        )

这是在响应式编程中绑定登录点击和文本字段的正确方法吗?

在看到这个例子之前,我在我的 ViewModel onSignUpClick() 中创建了一个函数,并从视图控制器绑定点击到 运行 该函数。那是糟糕的形式吗?

似乎如果一切都通过 init 传递,它会导致一个非常胖的 init 函数

仅凭一句话很难说您以前的方法是否有问题。视图模型函数如何访问字段值?它是如何 return 向视图控制器发送结果的?要给出正确的响应,我们需要查看代码。

至于"fat init",这可能是个人喜好,但我看不出有什么问题。不管怎样,这些输入将在某个地方得到处理。所以 init 中的一行最终对我来说对于视图控制器来说似乎很苗条。