在MVVM中绑定observable的位置?

时间:2016-08-05 16:56:04

标签: mvvm reactive-programming rx-swift

我注意到RxSwift GitHub Login Example在初始化时会将Viewservtroller传递给ViewMode:

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函数

1 个答案:

答案 0 :(得分:1)

很难说你以前的方法是不是坏形式,只用一句话。视图模型函数如何访问字段值?它是如何将结果返回给视图控制器的?为了给出正确的答案,我们需要查看代码。

对于"胖init",它可能是个人偏好,但我没有看到它的问题。无论如何,这些投入将在某处处理。因此,init中的一行对于我来说对于视图控制器来说似乎相当渺茫。