mark
可否提前获取节点 放入变量而不是每次设置的时候去查找getComponent
mark 不错
可以,很不错
这个应该不行,比如说 VMLabel ,可以监听的组件类型有 cc.RichText 和 cc.Label 组件, 这个时候并不知道你需要的是哪个组件,也不能全部暴露到编辑器上。
在onload的中这样获取为什么不行呢,请指教。
这样获取错误的原因可能是 labelType 值没定义,或者 本身没有这个组件。
不过为什么要这样使用呢?这个Mvvm方案 只有两步操作,一个编辑器中绑定组件,一个在代码中 进行 数据的修改操作。 并不需要代码中直接操作组件。
mark
mark一下
挺好,研究下
md fuck 一下
mark
码一哈
请教一个问题, 我尝试使用你的MVVM做一个列表界面, 列表项目中的每一个元素预制都是VMParent的子类,并做成了Prefab。
然后有一个列表数据,它是一个数组,内部元素是一个obj有多个字段, VMParent.data以引用的方式指向数组元素,好像不能,如下面:
properties: {
index: 0,
},
onLoad() {
this.data = DataManager.getIndex(this.index);
this._super();
}
我想的是改变DataManager中的数据,让界面也发生改变。
后来根据你的Shop的例子,data没有使用引用的方式,一个个的赋值,不过需要自己实现DataManager中数据更新的通知。
mark~
1.data不能直接引用,因为VMParent 的功能是 在自身绑定一个 ViewModel ,数据也放在自身上。
2.如果你想要更新data里的每一条数据,需要递归遍历一遍对象存在的属性并且赋值。(等于说深拷贝一遍)
3.数组绑定耗性能,而且通常一个配置数据的数组可能有50~100个元素,如果内部元素都是字段obj,会造成严重性能浪费。
所以建议的是,在操作数据数组后自行通知(可以设定一个通知变量,参考技能点例子,就是技能点变化后自动刷新)。
支持一波
厉害了
厉害 ,不过应用场景有点少啊, 游戏UI大多时候不是只单纯刷新UI,数据变化时,一般会有额外表现。 做表现时刷新数据就够了 感觉。