Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【功能需求】DataBinding:加入数据更新事件监听 #40

Closed
chenyanzz opened this issue Apr 3, 2024 · 1 comment
Closed

Comments

@chenyanzz
Copy link

现在的DataBinding,只能绑定某个变量,到某个数据上;

然而,有些时候,ViewModel的副作用可能难以通过简单的View层变量更新体现,而需要更多复杂的处理

因此,我希望BindingSet加入回调绑定的功能,样例写法如下:

void OnVarChanged(int val);
Bind(OnVarChanged).To(vm->x);

Besides:响应式数据这块,是否有可能参考Vue/React的写法,实现useEffect这样复杂的监听Hook?

@vovgou
Copy link
Owner

vovgou commented Apr 3, 2024

现在的DataBinding,只能绑定某个变量,到某个数据上;

然而,有些时候,ViewModel的副作用可能难以通过简单的View层变量更新体现,而需要更多复杂的处理

因此,我希望BindingSet加入回调绑定的功能,样例写法如下:

void OnVarChanged(int val);
Bind(OnVarChanged).To(vm->x);

Besides:响应式数据这块,是否有可能参考Vue/React的写法,实现useEffect这样复杂的监听Hook?

首先,Unity的UnityEvent 是可以绑定到ViewModel上的一个函数的。
然后你这里提到的这种情况,想将ViewModel的一个属性改变绑定到View层的一个函数上,你这个设计是不合理的,View里面应该就是一个简简单单的数据绑定,不应该在有这些逻辑。你应该通过自定义控件的方式来支持你这种需求。

参考我的ListView、或者我扩展的OSA的Grid、List等组件,还有FormattableTextMeshPro,TemplateTextMeshProUGUI。

这个道理跟 UGUI的Slider一样,我用户只关注value属性,还要滑动条最大最小值,业务逻辑只修改value属性,至于你里面还要同步更新多少值,要做多少事,那是Slider的工作,不能放在View中去做

@vovgou vovgou closed this as completed Apr 3, 2024
@vovgou vovgou reopened this Apr 3, 2024
@vovgou vovgou closed this as completed Apr 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants