2024年鸿蒙最新使用 Webix 创建 Email 客户端_window(3),斗鱼HarmonyOS鸿蒙面试

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

                    {
                        template: "Calendar"
                    }
                ]
            },
            /\* 2nd column of the second row.

/* Email list, Buttons, and Message reader */
{
type: “wide”,
rows: [
{ template: “Email List” },
{
height: 45, cols: [
{ template: “Button1” },
{ template: “Button2” },
{},
{ template: “Button 3” }
]
},
{ template: “Message” }
]
}
]
}
]
});


其中:


* cols 就是列,每行(row)可能包含了多个列(col);
* height 和 width 属性来定义视图所需的大小了
* type,它定义了布局边框。如果使用`clean`将获得无边框的单元格,使用`wide`将获得有边框的、有更大空间的单元格。


#### 实现 Toolbar


Toolbar(工具栏)可以包含各种元素,如按钮或下拉菜单等。


记住,要使用Webix创建组件,必须使用`view:“component_name”`代码行,元素属性允许选择工具栏的内容。


![](https://waylau.com/images/post/20170624-webix-toolbar.jpg)




{
view: “toolbar”,
height: 45,
elements:[
{view: “label”, label: “Webix Email 客户端”}
]
},



* elements 用来放置子的`view`组件。
* label 就是显示普通的文本标签

这里,我们使用了 [ui.chart](https://bbs.csdn.net/topics/618636735),来创建图表。





<div class="se-preview-section-delimiter"></div>

### 实现 Tree

创建菜单目录树:





<div class="se-preview-section-delimiter"></div>

```js
...
{
 view:"tree",
 id: "my\_tree",
 select: true,
 width:280,
 data:[
 { id:"1", value:"收件箱"},
 { id:"2", value:"已发送"},
 { id:"3", value:"草稿箱"},
 { id:"4", value:"垃圾箱"},
 { id:"5", value:"通讯录", open:true, 
 data:[
 { id:"5-1", value:"好友"},
 { id:"5-2", value:"家人"}
 ]
 }
 ]
},
...
```

其中:


* tree 是一个功能丰富的树形组件;
* open 设置为 true,来让我们的树在初始化时就处于打开状态。


最终效果如下:


![](https://img-blog.csdnimg.cn/img_convert/15be9db3372a07b6fc6cc439ab5fd74a.jpeg)


#### 实现 Calendar


创建日历组件:



```
...
{
    view:"calendar",
    timepicker:true
},
...
```

其中:


* calendar 是一个功能丰富的日历组件;
* timepicker 设置为 true,在日历上显示时间选择器。


最终效果如下:


![](https://img-blog.csdnimg.cn/img_convert/583f45204cca5e3e8b26566d879f9b66.jpeg)


#### 实现 Email 列表


还记得我们的在“快速开始”部分的那个表格吗?这里同样需要用表格来实现 Email 列表:


创建Email 列表:



```
...
 {
    id: "my\_datatable",
    view: "datatable",
    scrollX: false,
    columns: [
        {
            id: "checked", header: { content: "masterCheckbox" },
            template: "{common.checkbox()}", width: 40
        },
        { id: "name", width: 250, header: "发件人" },
        { id: "subject", header: "主题", fillspace: true },
        { id: "date", header: "时间", width: 150 }
    ],
    data: [
        {
            id: 1, folder: 1, name: "Way Lau",
            email: "waylau521@gmail.com", subject: "Invitation",
            date: "25/07/2017 12:30:20"
        },
        {                                                
            id: 2, folder: 1, name: "老卫",
            email: "waylau521@163.com", subject: "Report",
            date: "25/07/2017 16:10:07"
        },
        {
            id: 11, folder: 2, name: "Way Lau",
            email: "waylau521@gmail.com", subject: "Re: Forecast",
            date: "25/07/2017 14:10:45"
        },

        {
            id: 12, folder: 2, name: "老卫",
            email: "waylau521@163.com", subject: "Party invitation",
            date: "25/07/2017 17:05:10"
        }
    ]
    },
...
```

其中:


* columns 用来定义表头;
* `header:{ content:"masterCheckbox" }` 定义了可以全选列表的 checkbox;
* `template:"{common.checkbox()}"` 设置每个列表项都会带有一个 checkbox;
* scrollX 设置为 false,意味着禁用了水平的滚动条。
* fillspace 设置为 true,意味可以自动填充宽度。


最终效果如下:


![](https://img-blog.csdnimg.cn/img_convert/73db7fc2c8449575310e994dac37b817.jpeg)


#### 事件处理


事件,让组件具备交互功能:



```
...
// 绑定事件
$$("my\_datatable").bind($$("my\_tree"),function(obj,filter){
    return obj.folder == filter.id;
});

// 选中第一个节点
$$("my\_tree").select(1);
...
```

其中:


* “my\_datatable” 为 `datatable` 组件的 id。绑定了”my\_tree”的点击事件;
* `$$("my_tree").select(1)` 意味着树节点会选中第一个节点。


最终效果如下:


![](https://img-blog.csdnimg.cn/img_convert/90d734e8aa6ec0128c2824cd401335e6.jpeg)


#### 按钮实现


按钮实现如下:



```
...
{
    height: 45, cols: [
        {
            view:"button",
            label:"回复",
            width: 95
        },
        {
            view:"button",
            label:"创建",
            width: 95
        },
        {},
        {
            view:"button",
            label:"删除",
            width: 95
        }
    ]
},
...
```

其中:


* “my\_datatable” 为 `datatable` 组件的 id。绑定了”my\_tree”的点击事件;
* `$$("my_tree").select(1)` 意味着树节点会选中第一个节点。


最终效果如下:


![](https://img-blog.csdnimg.cn/img_convert/1c6dfd6516b356771d01b0fd599d7de9.jpeg)


#### 展示 Email 正文


展示 Email 正文实现如下:



```
...
{
    id:"details",
    template:"No message selected"
},
...
```

如果想显示文本,可以编写如下脚本:



```
var message = "大道至简 https://waylau.com";

$$("details").define("template",message);
$$("details").render();
```

最终效果如下:


![](https://img-blog.csdnimg.cn/img_convert/b565cff4d56493f06459b91f4e0884a8.jpeg)


#### 编辑窗口


发送邮件,我们需要有一个编辑窗口:



```
webix.ui({
    view:"window",
    move: true,
    id:"my\_win",
    width:400,
    head:"创建新邮件",
    position: "center",
    body: {
        view:"form",
        borderless:true,
        elements: [
        { view:"text", label:'收件人:', name:"address" },
        { view:"text", label:'主题:', name:"subject" },
        { view:"textarea", height:200, label:"内容:", name:"message"},
        { cols: [
            { view:"button", value: "发送", },
            { view:"button", value: "关闭", click:("$$('my\_win').hide();") }
        ]},
        ],
    }
});
```

然后在“创建”的按钮上,添加弹出窗口的事件:



```
...
{
    view:"button",
    label:"创建",
    width: 95,
    click:function(){
        $$("my\_win").getBody().clear();
        $$("my\_win").show();
    }
},
...
```

最终效果如下:




**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

![](https://img-blog.csdnimg.cn/direct/743b668910224b259a5ffe804fa6d0db.png)
![img](https://img-blog.csdnimg.cn/img_convert/246aedb70f3ef2186f6681de9cf331eb.png)
![img](https://img-blog.csdnimg.cn/img_convert/c5405848bf2209347d11503974e142f7.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618636735)**

果低效又漫长,而且极易碰到天花板技术停滞不前!**

![](https://img-blog.csdnimg.cn/direct/743b668910224b259a5ffe804fa6d0db.png)
[外链图片转存中...(img-9giwlHRV-1715746543304)]
[外链图片转存中...(img-azK6Sxna-1715746543304)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618636735)**

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值