前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CONNECT_NODES 中的SET HANDLER

CONNECT_NODES 中的SET HANDLER

作者头像
Jerry Wang
发布2019-07-22 16:37:17
2610
发布2019-07-22 16:37:17
举报
知识共享许可协议
知识共享许可协议

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

UI上两个field放到同一个header view,比如product ID和product description( 相同level),但是他们绑的Genil mode里面的field却不是相同level,而是存在父子关系。 这种情况下需要用到connect_nodes. 目的是parent node发生变化时,自动刷新child node,确保ui上显示的两个field的value是正确的。

总之,如果UI上同一level的field来自不同的UI component context node,这些context node对应绑定到的Genil mode里面的node之间存在父子关系,则UI component context node里面所有的child context node都应该实现on_new_focus.

这是一个比较典型的例子: [外链图片转存失败(img-xvMzujnA-1563690433633)(https://user-images.githubusercontent.com/5669954/32708356-44564e4c-c864-11e7-948c-5c8db7cd6604.png)] 你的疑问,我猜你是对这个例子里面直接call event handler,而不是在代码里面用raise event触发它,对吧?

你可以在connect_nodes和create_produom两个方法里面设置一个断点,当你在ui上创建一个新的product时候,后者会先触发,此时前者还未执行,因此new focus的event还未register。 而后者触发的原因正是这个代码里面manual call event handler的地方: [外链图片转存失败(img-w01hawKi-1563690433633)(https://user-images.githubusercontent.com/5669954/32708357-4488be2c-c864-11e7-909c-6a23d2bcb2ed.png)] 为什么要加21行呢?其实这就牵涉到model node和value node的区别。在product creation scenario里面,我们期望user在ui上的输入没有任何错误之后,才会真正走完4个level,最后在DB创建product。那么在ui 输入通过validation之前,所有ui输入都是存在value node里,然后当ui的输入通过validation 这一时间点之后,由value node转成model node。 [外链图片转存失败(img-HLd7V5gq-1563690433634)(https://user-images.githubusercontent.com/5669954/32708358-44bad286-c864-11e7-9043-7b143151063b.png)] 2743 register了2818的new focus事件 [外链图片转存失败(img-Tai1vGM0-1563690433634)(https://user-images.githubusercontent.com/5669954/32708359-44eef93a-c864-11e7-846c-001e40d7ac0a.png)] 这里2818 抛了new focus的事件, [外链图片转存失败(img-rE089dpL-1563690433635)(https://user-images.githubusercontent.com/5669954/32708360-4522de62-c864-11e7-87bd-bb8a27da8469.png)] 2743 收到事件,处理: [外链图片转存失败(img-SPNIReDv-1563690433635)(https://user-images.githubusercontent.com/5669954/32708361-4557e134-c864-11e7-888d-732ad829ec88.png)]

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档