ui-js-building-ui-interactions.md 2.1 KB
Newer Older
Z
zengyawen 已提交
1
# 添加交互
M
mamingshuai 已提交
2 3

添加交互可以通过在组件上关联事件实现。本节将介绍如何用div、text、image组件关联click事件,构建一个如下图所示的点赞按钮。
Z
zengyawen 已提交
4
**图1** 点赞按钮效果
M
mamingshuai 已提交
5

Z
zengyawen 已提交
6
![zh-cn_image_0000001064068638](figures/zh-cn_image_0000001064068638.gif)
M
mamingshuai 已提交
7 8 9 10


点赞按钮通过一个div组件关联click事件实现。div组件包含一个image组件和一个text组件:

Z
zengyawen 已提交
11 12 13 14 15

- image组件用于显示未点赞和点赞的效果。click事件函数会交替更新点赞和未点赞图片的路径。

- text组件用于显示点赞数,点赞数会在click事件的函数中同步更新。

M
mamingshuai 已提交
16 17 18

click事件作为一个函数定义在js文件中,可以更改isPressed的状态,从而更新显示的image组件。如果isPressed为真,则点赞数加1。该函数在hml文件中对应的div组件上生效,点赞按钮各子组件的样式设置在css文件当中。具体的实现示例如下:

Z
zengyawen 已提交
19

H
HelloCrease 已提交
20
```html
M
mamingshuai 已提交
21 22 23 24 25 26 27 28 29 30
<!-- xxx.hml -->
<!-- 点赞按钮 -->
<div>
  <div class="like" onclick="likeClick">
    <image class="like-img" src="{{likeImage}}" focusable="true"></image>
    <text class="like-num" focusable="true">{{total}}</text>
  </div>
</div>
```

Z
zengyawen 已提交
31

H
HelloCrease 已提交
32
```css
M
mamingshuai 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
/* xxx.css */
.like {
  width: 104px;
  height: 54px;
  border: 2px solid #bcbcbc;
  justify-content: space-between;
  align-items: center;
  margin-left: 72px;
  border-radius: 8px;
}
.like-img {
  width: 33px;
  height: 33px;
  margin-left: 14px;
}
.like-num {
  color: #bcbcbc;
  font-size: 20px;
  margin-right: 17px;
}
```

Z
zengyawen 已提交
55

H
HelloCrease 已提交
56
```js
M
mamingshuai 已提交
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
// xxx.js
export default {
  data: {
    likeImage: '/common/unLike.png',
    isPressed: false,
    total: 20,
  },
  likeClick() {
    var temp;
    if (!this.isPressed) {
      temp = this.total + 1;
      this.likeImage = '/common/like.png';
    } else {
      temp = this.total - 1;
      this.likeImage = '/common/unLike.png';
    }
    this.total = temp;
    this.isPressed = !this.isPressed;
  },
}
```


H
HelloCrease 已提交
80
除此之外,还提供了很多表单组件,例如开关、标签、滑动选择器等,以便于开发者在页面布局时灵活使用和提高交互性,详见容器组件。