感觉用代码控制UI浪费人生,于是整了个新的MVVM方案……

mark.

插眼 学习

already set VM tag:_temp
you forget delete MVEditFinder
有什么影响

我用js写的游戏。。。 用这个框架还来得急吗? 听说分分分分钟就可以js转ts?

1赞

早转ts早享受

你直接用JS也可以调用TS的。里面有写JS调用TS的例子

刚才了解了一下框架,的确不错。 但是我有个疑问哈

我有一个Layout Container 里面用于展示一个列表。 列表可能有10条 也可能有20条。
貌似用这种方式就不能自动更新了。。 每次有任何一条数据变化,都需要重新渲染整个列表?

怎么做到,只更新其中一条的数据呢?

或者是 原本有20条,后来删了10条。 怎么做到只删除10条, 而不用重新渲染整个列表。。。

方法太多了,自己管理节点,比如map
点击事件的时候把当前item node传过去

看了一下框架给的ts的例子, 因该是需要全删除 然后重新创建。

当然updateCell方法可以自己实现 可以实现成 按需删除。。。


正确做法是重载array

例如 pop出一个元素后, 就会自动把对应的UI的Node给删除掉吗? 那就完美了 :grinning:

image

像它这个例子 我怎么样改造一下。 就可以实现 重载Array 就可以更新列表了呢?

是不是还需要给 每个子node 绑定一下数组里的元素呀

如果我这个 players下有个属性 是这数组。。。这里怎么绑定path呢?

例如: player.gold.0 ? 试下看看

我使用的VMParent来自己控制UI

VM.setValue(“group.groupMyInfo.nextAdTime”, 123)

如果这样变化数据, 那bindPath "group.groupMyInfo.nextAdTime” 就可以监听到数据变化。

但是如果:
VM.setValue(“group.groupMyInfo”, $groupMyInfo )
也就是直接设置一个json Object 那
bindPath "group.groupMyInfo” 就会监听不到变化。

请问为什么呢? 我应该如果解决

主要目前结构中没考虑 绑定后的对象、数组 直接被替换,必须一个值一个值设置。
要么 试试 VM.getObjValue() /VM.setObjValue() ,
如果不行的话 只能在 ViewModel 中 修改下 setValueFromPath 方法吧,或者修改 VM.setValue 方法自行判断传入值为数组或者对象时 进行额外的处理。

1.好像 setObjValue 和 setValue差别不大。。。

image

2. setValue 时 判断入参是 对象 好像也不太可行, 因为最终触发回调的条件是非对象才回回调

我想改一下这里 您看下可不可行哈
1.修改JsobOB 的逻辑, 如果set的是对象 直接触发回调。不再判断对象是否一致?
也可以把对象序列化一下 比较一下 对象是否变化(不过好像没必要)

最后这个办法 我试了一下 的确可行。。
@whitesheep 大佬看看哈 我验证过了

我觉得这算是个bug? 这里 判断 oldVal !==newVal 如果是对象的话 永远都是相等的吧。。 所以加个else :joy:

使用这个会导致微信小游戏代码侵权嘛?

网盘下载的项目是用什么版本的编辑器打开?

markmark