Shisheng Chen

Results 54 comments of Shisheng Chen

> 返回值为 RET_ITEMS_CHANGED 仅表示 ViewModel 自身的项目数量发生变化。如果v-for绑定对象为ViewModel内的一个对象,有两种方式通知变化: 1、对象上的项目数量发生变化时,可以手动调用 view_model_notify_items_changed 来通知界面变化; 2、对象创建时 emitter_on(EMITTER(asvm->names), EVT_ITEMS_CHANGED, emitter_forward, vm); ,则该对象分发 EVT_ITEMS_CHANGED 事件时会通知界面变化。 试过了,不行的。要按(#64)[那里](https://github.com/zlgopen/awtk-mvvm/issues/64#issuecomment-2524832097)打补丁修改awtk-mvvm才行。

> 完善了demo13,添加了显示两列表的示例,可以参考 好的,我再看看,之前可能有东西没搞对。

还是有问题:渲染`v-for="{items}"`时要求`getProp` `items.#size`回复的数据类型必须为`tk_object_t*`类型。 然而Zig这边响应`getProp`是由Zig struct实现的,而非`tk_object_t`。于是就要非常拙劣地添加下面这个Zig struct来响应`items.#size`: ```Zig const Size = struct { @"#size": u32 = 0, pub const Object = object.Object(Size, .{}); pub fn init(_: *Size) void {} pub fn deinit(_:...

单个view-model显示两个列表后,切换语言时第一个列表内的combo_box的options没有自动切换翻译: 需要在切换语言后,手动修改第一个列表内所有combo_box的选中项之后,才会随语言切换时自动切换其翻译。 ![屏幕截图_20250101_204536](https://github.com/user-attachments/assets/d2614414-2688-4036-942a-8e0cdea89fd6) 两个列表的UI如下: ```XML ```

> 切换语言时第一个列表内的combo_box的options没有自动切换翻译的问题,更新awtk 到55c8f8d0e2b5d7a5d5120fbd6eb69151c60188f0 以上 试试 这个问题似乎是改了,但引入了个更大问题:View-Model的初始数据被View在显示时修改了,而且被修改了两次。View显示时的调试信息如下: ``` debug: application.init debug: language changed: Chinese debug: registered view-model: UserVM debug: registered view-model: UsersVM debug: UsersVM.init view_model_on_will_mount : Obj.UsersVM try font load default_zh_CN...

> 界面初始化时设置为中文具体是怎样 跟combo_box绑定的`languageId`的初始值是`1`的,界面初始化后其值被View改成`0`了。 ```XML ```

src/application.zig: ```zig pub fn init() !void { std.log.debug("{s}.{s}", .{ @typeName(@This()), @src().fn_name }); try awtk.setLanguage(.Chinese); try models.init(.{}); try viewmodels.init(); try mvvm.navigatorTo("win_main"); } ``` ``` 操作系统: Manjaro Linux KDE Plasma 版本: 6.2.4...

Ubuntu上也是一样呀,跑AWTK的demo都出问题。Linux环境不应该测试下么?

> 已修改,非常感谢。最近的修改导致fscript和binding rule之间引用计数循环引用导致的。需要更新awtk和awtk-mvvm。 拉取最新代码测试,没有内存泄露了。建议awtk添加上述那种设置外部内存分配器的接口。

内存检测只是一个方面,主要是方便跟zig交互、统一内存管理。zig有多种不同优化策略的分配器,能同时满足Debug版的稳定、Release版的高效的需求。 这个接口也就一行代码。