鴻蒙OS 添加交互

2020-09-18 13:55 更新

添加交互通過在組件上關聯事件實現。本節(jié)將介紹如何用 div、text、image 組件關聯 click 事件,構建一個如下圖所示的點贊按鈕。

圖1 點贊按鈕效果

img

點贊按鈕通過一個 div 組件關聯 click 事件實現。div 組件包含一個 image 組件和一個 text 組件:

  • image 組件用于顯示未點贊和點贊的效果。click 事件函數會交替更新點贊和未點贊圖片的路徑。
  • text 組件用于顯示點贊數,點贊數會在 click 事件的函數中同步更新。

click 事件作為一個函數定義在 js 文件中,可以更改 isPressed 的狀態(tài),從而更新顯示的 image 組件。如果 isPressed 為真,則點贊數加 1。該函數在 hml 文件中對應的 div 組件上生效,點贊按鈕各子組件的樣式設置在 css 文件當中。具體的實現示例如下:

  1. 添加交互通過在組件上關聯事件實現。本節(jié)將介紹如何用 divtext、image 組件關聯 click 事件,構建一個如下圖所示的點贊按鈕。
  2. 1 點贊按鈕效果
  3. 點贊按鈕通過一個 div 組件關聯 click 事件實現。div 組件包含一個 image 組件和一個 text 組件:
  4. image 組件用于顯示未點贊和點贊的效果。click 事件函數會交替更新點贊和未點贊圖片的路徑。
  5. text 組件用于顯示點贊數,點贊數會在 click 事件的函數中同步更新。
  6. click 事件作為一個函數定義在 js 文件中,可以更改 isPressed 的狀態(tài),從而更新顯示的 image 組件。如果 isPressed 為真,則點贊數加1。該函數在 hml 文件中對應的 div 組件上生效,點贊按鈕各子組件的樣式設置在 css 文件當中。具體的實現示例如下:
  7. <!-- xxx.hml -->
  8. <!-- 點贊按鈕 -->
  9. <div>
  10. <div class="like" onclick="likeClick">
  11. <image class="like-img" src="{{likeImage}}" focusable="true"></image>
  12. <text class="like-num" focusable="true">{{total}}</text>
  13. </div>
  14. </div>
  15. /* xxx.css */
  16. .like {
  17. width: 104px;
  18. height: 54px;
  19. border: 2px solid #bcbcbc;
  20. justify-content: space-between;
  21. align-items: center;
  22. margin-left: 72px;
  23. border-radius: 8px;
  24. }
  25. .like-img {
  26. width: 33px;
  27. height: 33px;
  28. margin-left: 14px;
  29. }
  30. .like-num {
  31. color: #bcbcbc;
  32. font-size: 20px;
  33. margin-right: 17px;
  34. }
  35. // xxx.js
  36. export default {
  37. data: {
  38. likeImage: '/common/unLike.png',
  39. isPressed: false,
  40. total: 20,
  41. },
  42. likeClick() {
  43. var temp;
  44. if (!this.isPressed) {
  45. temp = this.total + 1;
  46. this.likeImage = '/common/like.png';
  47. } else {
  48. temp = this.total - 1;
  49. this.likeImage = '/common/unLike.png';
  50. }
  51. this.total = temp;
  52. this.isPressed = !this.isPressed;
  53. },
  54. }
  55. JS UI 框架還提供了很多表單組件,例如開關、標簽、滑動選擇器等,以便于開發(fā)者在頁面布局時靈活使用和提高交互性,詳見容器組件。

  1. /* xxx.css */
  2. .like {
  3. width: 104px;
  4. height: 54px;
  5. border: 2px solid #bcbcbc;
  6. justify-content: space-between;
  7. align-items: center;
  8. margin-left: 72px;
  9. border-radius: 8px;
  10. }
  11. .like-img {
  12. width: 33px;
  13. height: 33px;
  14. margin-left: 14px;
  15. }
  16. .like-num {
  17. color: #bcbcbc;
  18. font-size: 20px;
  19. margin-right: 17px;
  20. }

  1. // xxx.js
  2. export default {
  3. data: {
  4. likeImage: '/common/unLike.png',
  5. isPressed: false,
  6. total: 20,
  7. },
  8. likeClick() {
  9. var temp;
  10. if (!this.isPressed) {
  11. temp = this.total + 1;
  12. this.likeImage = '/common/like.png';
  13. } else {
  14. temp = this.total - 1;
  15. this.likeImage = '/common/unLike.png';
  16. }
  17. this.total = temp;
  18. this.isPressed = !this.isPressed;
  19. },
  20. }

JS UI 框架還提供了很多表單組件,例如開關、標簽、滑動選擇器等,以便于開發(fā)者在頁面布局時靈活使用和提高交互性。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號