通过RAC实现双绑

理解MVVM

通过RAC实现双绑_第1张图片
MVVM图示
  • View
    由MVC中view和controller组成,负责UI的展示,绑定viewmodel中的属性,触发viewmodel中的命令。
  • viewModel
    从MVC的controller中抽取出来的展示逻辑,负责从model中获取view所需药的数据,转换成view可以展示的数据。并暴露公开的属性和命令供view进行绑定。
  • model
    与MVC中的model一致,包括数据模型,访问数据库和网络操作请求。
  • binder
    在view和viewModel的同步,避免大量繁杂的样板代码。

下图是个人理解


通过RAC实现双绑_第2张图片
MVVM理解
  • controller
    持用view对象和viewmodel,通过bindview:viewmodel:方法将view中控件和viewmodel中的数据进行绑定(利用RAC)。
  • model
    请求服务端数据和本地数据库数据依然在model中操作。

Demo

一个输入框和一个按钮。当用户输入了电子邮箱地址、点击订阅按钮后,电子邮箱地址会提交到web服务器上。邮箱地址有效的才能点击订阅。


通过RAC实现双绑_第3张图片
Demo示例

我们先来看双绑的实现

- (void)bindWithViewModel {
    //将viewmode的email属性与文本框输入的内容绑定
    RAC(self.viewModel, email) = self.emailTextField.rac_textSignal;
    //订阅按钮响应
    self.subscribeButton.rac_command = self.viewModel.subscribeCommand;
    //将self.statusLabel的text属性与viewmodel中的statusMessage绑定
    RAC(self.statusLabel, text) = RACObserve(self.viewModel, statusMessage);
}

参考资料

http://blog.leichunfeng.com/blog/2016/02/27/mvvm-with-reactivecocoa/
http://blog.csdn.net/womendeaiwoming/article/details/37597779

你可能感兴趣的:(通过RAC实现双绑)