RidgeUI开发入门教程(二)数据连接与交互

41 阅读3分钟

数据连接与交互

您可能看到了,上一节,在文本中输入文字,下面的显示也随之变化。这就是数据的连接:

  • 组件按连接的数据进行实时更新显示
  • 用户操作的交互会触发数据变化

alt text

上面例子中,输入框修改造成名称变化, 而名称变化又更新到文本内容。 点击按钮造成名称变化,名称变化同时更新了输入框和文本。

在这里,输入框较为特殊,他既能接受变化,又能发出变化。很多组件例如输入框、下拉选择、单选框、多选框、标签页等都有类似功能。

但无论如何,设计页面我们只需要考虑如何连接属性、如何处理交互即可。

一个复杂些的示例

为了巩固上述概念, 我们制作一个地图页面, 页面中会显示北京市地图, 当选择各个行政区时,地图对应部分进行高亮度显示

alt text

准备

  1. 创建页面,我们命名为 beijing
  2. 应用中添加一个地图文件,可以点此下载后添加
  3. 应用中添加一个页面脚本文件,可以点此下载后添加

放置页面的组件

打开页面,首先在脚本库选择map.js (步骤3添加的脚本)

还是从bootstrap组件库中依次向页面加入文本、 下拉选择、页签、 2个按钮。 切换组件库echarts (转存失败,建议直接上传图片文件 ) ,向页面放入地图组件

配置连接、交互

组件属性连接/配置值
页签当前项区域值
页签项区域列表
下拉选择当前项区域值
选项区域列表
区域地图地理JSON文件110000.json
数据图表当前选中
组件交互处理动作
区域地图区域读取设置区域列表
上一个点击上一个
下一个点击下一个

预览运行

点击下拉项、或者切换选择时, 地图区域会随之联动

回顾

虽然我们只配置了各种组件的连接和交互, 但实际整体页面数据是这样变化的:

  1. 地图配置了地理JSON文件时,会产生个动作(注意,动作不一定由使用者触发, 组件自己本身也会发出动作)。 动作的交互,触发-设置区域列表
  2. 区域列表改变,触发下拉框和标签组件显示出区域的列表
  3. 用户切换区域(或点击上一个、下一个), 触发当前区域发生变化
  4. 区域变化触发名称改变,使文本内容发生变化
  5. 触发图表选中发生改变,使地图对应区域高亮

这实际在前端开发中被成为“页面数据流“。它的特点就是组件之间没有发生直接交互,每个组件都和数据进行单向或双向的连接,方便了配置过程。

更多了解

附录

map.js 点此下载


export default {
  name: 'MapToggle',
  state: {
    currentIndex: 0, // 区域值
    features: [] // 区域列表
  },

  computed: {
    currentName () { // 当前区域名称
      return this.features[this.currentIndex]?.label
    },
    currentRegion () {  // 图表当前选中
      return [{
        name: this.currentName,
        value: 40
      }]
    }
  },

  actions: {
    setFeatures (list) {  // 设置区域列表
      this.state.features = list.map((t,index) => ({
        label: t,
        value: index
      }))
      this.current = list[0]
    },

    prev () { // 上一个
      if (this.currentIndex === 0) {
        this.currentIndex = this.features.length - 1
      } else {
        this.currentIndex --
      }
    },

    next () { // 下一个
      if (this.currentIndex === this.features.length - 1) {
        this.currentIndex = 0
      } else {
        this.currentIndex ++
      }
    }
  }
}