通过RAC实现双绑

作者: 面试小集 | 来源:发表于2016-05-12 23:16 被阅读528次

    理解MVVM

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

    下图是个人理解


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

    Demo

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


    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实现双绑

        本文链接:https://www.haomeiwen.com/subject/koeprttx.html