变量集的用法

  • 变量集的概念:
    如果你有编程基础的话,就可以认为变量集和编程语言里的变量是类似的概念。变量集是MisShop页面的组成部分,代表了页面中的可变数据。一个页面可以拥有多个变量集。变量集既是页面的数据操控对象,又是公式、函数及表达式的合法参数。变量集最核心的属性是名字、类型和值。页面通过变量集的名字引用变量集。
  • 变量集的作用:
    1. 向数据库取数据,以供页面使用。
    2. 与控件配合动态保存用户操作结果
    3. 获取变量集自身的数据,调用变量集自带的功能函数
    4. 向公式、函数及表达式传递正确的参数类型和参数值。
  • 变量集的类型
    • 数据集
    • 记录
    • 数组
    • 键值对
    • 整数
    • 数值
    • 日期
      数据集和数据库表是对应关系,一般可以认为数据集是包含了多条数据库表记录的集合。通过数据集可以向数据库表取数据,以供页面使用。
      记录和数据库表的一条记录是对应关系。通过记录变量集可以向数据库表获取或者保存一条记录。
      数组变量集的值代表一个一维的数组。
      键值对变量集和编程语言中的Map或者HashMap或者HashTable是对应关系,也可以认为是一个数组,这个数组的每个元素是一个键值对。
      整数变量集的值代表一个整数,这个和传统编程语言中的int声明的变量类似。同理,数值变量集的值代表一个小数,日期变量集的值代表一个日期。
  • 添加变量集
    当我们在Misshop设计器中打开一个页面后,界面左侧有三个标签页,其中的“数据”标签页就代表了本页面的数据资源集合,其中包括了页面参数,当然也包括了页面的变量集。点击该标签页面里左上方的“增加”按钮即可为页面添加变量集。


    image.png

    变量集需要初始化,如果不处理初始化标签,那么这个变量集的值就是null。不同类型的变量集有不同的初始化方法。

  • 修改或删除变量集
    点击“数据”标签页里每个变量集名字后面的配置按钮,即可启动变量集编辑页面。其中的删除按钮可以删除该变量集。


    image.png
  • 使用变量集
    • 数据集变量集的用法:请参考https://www.jianshu.com/p/32cd546e4257
    • 记录变量集的用法
      记录变量集用的最多的场景就是新增和编辑界面。这种界面通常由模板自动生成,这里简介一下用法:
      image.png

      由于记录对应数据库表中的某一条数据,那么它是需要给定一个查询条件才能确定是哪条数据,这个条件就是在初始化标签里的条件参数给出的:举例如下:
      image.png

      在这个例子中,it_id是这个页面的参数,通过@it_id就取到了这个参数的值。那么当用户访问这个页面时,这个"it用户"记录变量集会自动地初始化为用户表中id为指定参数的那条记录。
      作为平台的惯用法,记录的名字建议以it开头,如上图所示。记录的泛型就是它对应的数据库表,在设计器页面的单元格里输入=it用户., 后面就会出来用户表的所有字段名,选择一个字段名如名称后,单元格值变为=it用户.名称, 那么这个单元格就和用户表记录的“名称”字段产生了绑定关系,即可以显示记录对应记录的字段值,也可以将这个单元格对应控件里的值保存到该字段。对于泛型对应表的关联表,比如要显示用户的对应角色的名称,我们知道用户表有一个字段“角色”关联到了角色表,那么就可以输入=it.用户.角色.名称来获取关联表关联记录的名称信息。
      假设有这样一个需求,每产生一个订单,就需要同时产生和订单关联的一个各种成本和收益的财务数据行(考虑资金的敏感问题,我们希望订单相关的资金字段独立成表仅供财务角色修改查看)。这时候数据库表分为订单表和订单资金表。具体实现的时候可以在订单的录入页面,加入it订单it订单资金两个记录变量集,然后将it订单的id字段单元格同时保存至it订单.idit订单资金.订单即可。
    • 数组变量集的用法
      在新建变量集的界面里,有一个用途选项,对于数据集和记录而言,绝大多数场景都是选择"back", 但是对于其他类型,通常都是要选择"front"。数组变量集通常也是用途要选为"front"。我们称之为前端变量集,前端变量集可以保存前端控件的值的变化。下面以系统自带的用户管理页面的批量删除为例阐述一下数组变量集的使用。
      image.png

      如图所示,用户管理页面的数据标签页里有一个叫checked的数组变量集,这个变量集的作用呢就是用户每次勾选用户列表里的复选框,就往这个checked数组里保存一个对应用户的id,取消勾选则反之。这一点是由复选框控件的内置逻辑来保证的,我们查看一下“B7”单元格的属性,它是一个复选框,里面配置了关联数组变量集和关联数组变量集里面的元素的值(A7)
      image.png

      当我们点击用户管理上方的批量删除按钮时,这个按钮为什么知道要去删除哪些对应用户id的用户呢?是因为批量删除按钮配置了checked数组变量集,它只要读取这个变量集里面的用户id就可以了。配置如下图:
      image.png

      在这个例子中,数组变量集checked记录了用户操作控件的变化,而记录的结果被另外一个控件所引用。
      • 数组变量集的初始化:
        数组变量集的初始化通常有两种,一种是数组初始化为一个空数组,这时候要用List.create()函数,如下图所示:


        image.png

        另一种是从其他类型的变量转化,这种情况下初始化后数组里会有多个元素。


        image.png

下面再举一个例子,做一个平均值计算,这个样本里一开始有5个初始数据

image.png

页面内容如下:
image.png

B3是个数字输入框,C3是个按钮,每次点击按钮,我们把B3的值追加到样本数组变量集中,页面重新计算平均值。
所以在按钮的高级配置中,点击事件处理如图:
image.png

这样配置完就可以了。
在这个例子中,数组变量集listNumbers是按钮处理函数里的脚本的主体,也是avg函数的参数。
+ 键值对变量集的用法
键值对和数组很像,只是键值对的每一项都是两个值,可以很方便地根据键得到值。
键值对的初始化:
初始化一个空的Map:
image.png

从其他数据来源初始化:
image.png

下面也举一个例子,这个例子中的键值对变量集叫mapFruitPrices,因为演示效果呢需要它是一个后端变量集,也就是它的用途需要设为back。
image.png

页面内容如下图所示
image.png

B2是一个数字输入框,A2的背景色设置一个公式ifv(dynamic(B2)>35,-52429,-1),如下图所示:
image.png

这样我们就可以看到当数字输入框的数字大于35的时候,它的标签就变成了红色。
+ 整数变量集的用法
整数变量集的值就是一个整数,它的初始值可以给一个整数常量,比如0.
image.png

整数变量集也举一个例子,在这个例子中,比如说酒店的指标项,可能有免费WiFi,免费矿泉水、接送服务、洗漱用品提供、翻译服务,具体到数据库表中,指标太多太多,为了节省字段,不是每个指标都建立字段,而是整体用一个整数字段指标集合来代表这些指标的任意组合集合。
页面如下:
image.png

从A2到A6都是用复选框来表达这个指标项,当用户选择或取消选择时,我们需要改变这个整数变量集index,这就需要配置复选框控件的高级模式中的值改变:如下图所示:
image.png

上图是A2格的,再给一个A3格的
image.png

其他的都是依次类推,只是index加减的数字是4,8,16,...
结果如下:

image.png

后续只要把A7保存至it酒店.指标集合就可以达成目标了。
+ 数值变量集
(略)
+ 日期变量集
初始化如下:
image.png

  • 单元格变量集
    在制作一些统计报表的时候,常常需要在扩展行中临时产生变量,这种变量个数不固定,初始化参数也不固定,这种情况下就会用到单元格变量集。这种临时产生的变量集不会出现在数据标签页里面。
    下面给一个例子加以说明:
    最终效果如下:
    image.png

    在部门数据集ds部门的扩展过程中,我们对于每个部门临时生成一个和部门相对应的用户数据集变量集,而这个数据集的参数需要用到当前的部门,页面如下图所示:
    image.png

    注意C2单元格的值:=table.用户.find(table.用户.部门==A2), 这样一个函数调用就可以产生一个单元格数据集变量,后续对这个变量的引用都是用格名来进行的,比如D2单元格用到了C2.select(C2.id)。
    如果要产生一个单元格记录数据集,可以参考如下:
    =table.用户.findOne(table.用户.id==A3),这样的话这个单元格就是一个id等于A3的用户记录数据集。
  • 变量集的取值函数
    我们之前说过,像数据集或记录这样的复杂类型,通常都是后端变量集,初始化后就不变了;但是特殊场景下也可以做成前端变量集,可以根据情况多次“初始化”,这就会用到取值函数。
    在下面这个例子中,输入用户ID,立刻显示用户名称,用户每输入一次,记录变量集it用户就重新取一次值:
    image.png

    页面设计如下:
    image.png

    其中B1是一个数字输入框,用来输入用户id
    it用户是一个前端记录变量集,它没有初始化,但是拥有一个取值函数:
    image.png

    每次B1动态变化时,it用户都要重新取值,而B2单元格=it用户.名称则会自动更新。.
    感谢您的关注,希望您似乎已经体会到了MisShop变量集的巨大用途,Enjoy It!
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,951评论 6 13
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,096评论 1 32
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,397评论 0 17
  • 时间总是在飞速的旋转,,不停的跳跃,,在没有达成清晰计划的当下,,就只能把每一件事,以至每小时做的事,,事无巨细的...
    如风一般的女子阅读 188评论 0 0
  • 今天早晨,我懒洋洋的睁开眼睛,我伸了一个懒腰,穿好衣物。慢慢的拉开窗帘 我吃了早饭,就去上学了。 ...
    孙悦宁阅读 204评论 0 3