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

关于列表渲染的一些疑问 #55

Open
Tracker647 opened this issue Jun 29, 2024 · 5 comments
Open

关于列表渲染的一些疑问 #55

Tracker647 opened this issue Jun 29, 2024 · 5 comments

Comments

@Tracker647
Copy link

我打算实现一个逻辑,这个逻辑打开一个中转页面,中转页面有六个按钮通向不同的菜单页面。
菜单页面除了菜单名,左侧的tab按钮(实际上是单选按钮,逻辑原因不想自动切界面只能用单选)列表和菜单列表项不同以外,布局均相同。我现在的疑问是:
1.我找了一遍demo,好像view_model只能用来渲染一个view_model的数组?还是有办法多个?我打算在菜单的model分别对左侧tab按钮和右侧菜单item做列表渲染。
2.view_model能不能用来渲染原生类型的数组(如字符串,int),还是必须先建一个model?
3.菜单样式局部复杂多变,没法定制化,因此这部分我是用component完成的,我想的是用列表渲染动态传入component的xml名,将菜单item一个个渲染出来,但我不知道component能不能做到这点。
4.component的本质就是include文本替换,没法传参或者组件间通信,看起来还是不灵活,未来有没有进一步扩展component的计划?

一个可能的view和model伪代码(model懒得注释了):
menu.xml

<view name="view_top" h="55" w="100%" x="r:0" y="0">
    <label name="1bl_menu_tag" w="155" children_layout="default(r=1,c=0)" h="54" x="10" y="0">
        <button name="back_arrow" on:click="back()" w="31" style="menu_back" />
        <label name="1bl_menu_name" v-data:text="{menu_title}" style:normal:border_color="#00000000" w="124" />
    </label>
</view>
<view name="view_left" w="25%" style:normal:border_color="#264D6B" children_layout="default(r=0,c=1,xm=10,ym=10,s=10)" x="0" y="55" h="100%">
    <radio_button v-for="rbtn_items" name="{rbtn_items.name}" h="7o" style="tab_onwa" value="true" on:click="{rbtn_items. func}" text="Range" />
</view>
<list_view name="view_right" x="r:0" y="55" w="75%" h="100%" default_item_height="60">
    <scroll_view name="scroll_view" h="100%" yslidable="true" children_layout="list_view(xm=20)">
        <?include v-for="setting_items" filename="{setting_items.name}" ?> 
    </scroll_view>
    <scroll_bar_d name=" scroll_bar" x=" r" y=" 0" w=" o" h=" 0" animatable=" true"/>
</list_view> 

menu.h

#ifndef MENU_H
#define MENU_H
#include "awtk.h"
#include "tkc/types_def.h"
#include "tkc/str.h"
#include "mvvm/base/navigator_request.h"

BEGIN_C_DECLS
/**
 * @class menu_t
 * @annotation ["collection:{..}","model"]
 * menu model
 */
typedef struct _menu_t {
    str_t menu_title;
    darray_t rbtn_list;
    darray_t settings_list;
    /* private */
    navigator_request_t *req;
} menu_t;


END_C_DECLS

效果图:
image

@xianjimli
Copy link
Member

你在群里问下吧,其他同事对MVVM了些扩展,有些功能我没太关注。

@xianjimli
Copy link
Member

一次最好只问一个问题,多了看得太累。

@Tracker647
Copy link
Author

好吧 会注意的 谢谢😅

@xuchaoze
Copy link
Collaborator

问题1、2可以参考demo35;问题3,4有计划但未有人力实现。

@xuchaoze
Copy link
Collaborator

完善了demo13,添加了显示两列表的示例,可以参考

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

3 participants