找回密码
 立即注册

QQ登录

只需一步,快速开始

excelxnz

注册会员

4

主题

21

帖子

63

积分

注册会员

积分
63
最新发帖
excelxnz
注册会员   /  发表于:2022-1-4 19:36  /   查看:1246  /  回复:3
本帖最后由 excelxnz 于 2022-1-4 19:51 编辑

需求:想在自定义的组件中获取传入的参数?

当前问题场景:

我自定义了一个“科目组件”,放在工具栏中,点击弹出了一个弹窗,选中科目后,需要在“科目组件”上显示。
不知道怎么给组件中传参,多种方式尝试无果,还请大佬指点一下。感谢

代码如下(Vue代码):
  1. // 1. 定义了一个 KeMuTemplate.js, 内容如下
  2. function KeMuTemplate() {
  3.     GC.Spread.Sheets.Designer.AtomicComponentBase.call(this, ...arguments)
  4. };
  5. // 继承AtomicComponentBase
  6. KeMuTemplate.prototype = new GC.Spread.Sheets.Designer.AtomicComponentBase();

  7. KeMuTemplate.prototype.getTemplate = function (options) {
  8.     console.log(options)

  9. // * 想得到传入的参数,完成选择后显示选中项 ??????

  10.     return `<button type="button" title="选择科目" class="ribbon-button-comboBox ribbon-button-item" data-text="选择 科目" data-command="ribbon.cmdKeMu" dataid="1641294062437" data-buttontype="comboBox"><div class="ribbon-button-item-text">8888</div><div class="ribbon-button-item-icon ribbon-button-indicator-icon"></div></button>`;
  11. }
  12. KeMuTemplate.prototype.onMounted = function (host, options) {
  13.     console.log("KeMuTemplate 挂载", host, options)
  14. }
  15. KeMuTemplate.prototype.onValueChanged = function (prevValue, nextValue, host, options) {
  16.     // 在这里拿到选中的单元格的value,刷新组件UI显示值
  17. }
  18. KeMuTemplate.prototype.updateValue = function (host, options) {
  19.     return null;
  20. }
  21. KeMuTemplate.prototype.onDestroy = function (host) {
  22. }
  23. export { KeMuTemplate };




  24. // 2. 引入app.vue 并注册了一个“科目”组件
  25. GC.Spread.Sheets.Designer.Designer.RegisterComponent("KeMuTemplate", KeMuTemplate);


  26. // 3.在command中使用
  27. cmdKeMu: {
  28.     title: "选择科目",
  29.     text: "选择 科目",
  30.     class: "ribbon-dbs-kemu",
  31.     commandName: "cmdKeMu",
  32.     type:'KeMuTemplate',
  33.     nnn:'想传入一个参数,初始化选中项',
  34.     execute: (context, selectValue) => {
  35.       // 单击执行正常, 打开了弹窗
  36.     },
  37.   },


  38. // 4.弹出窗中选择后
  39. vue:{
  40.   
  41.   data:{
  42.     kemuChoose: null
  43.   },
  44.   methods:{
  45.     ...
  46.     onChoose:(val){
  47.       this.kemuChoose = val;
  48.       // 但是如何将 val 赋值到 “KeMuTemplate” 中?遇到了问题
  49.     }
  50.     ...
  51.   }

  52. }
复制代码


3 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-1-5 14:47:17
推荐
excelxnz 发表于 2022-1-5 11:26
选择时这样没问题也已经实现,回显时,遇到不切换至当前标签栏,dom中就获取不到。默认打开在"开始"标签了 ...

像是想要设置默认的ribbon pannel可以参考附件的demo,demo实现的就是默认打开“数据”这pannel。

默认tab.html

2.36 KB, 下载次数: 29

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-1-5 11:17:07
沙发
你好,可以参考下面链接的demohttps://gcdn.grapecity.com.cn/fo ... 1&fromuid=59119

利用js的方法在选择完成后更新对应id的DOM值。
image.png69488219.png

回复 使用道具 举报
excelxnz
注册会员   /  发表于:2022-1-5 11:26:15
板凳
选择时这样没问题也已经实现,回显时,遇到不切换至当前标签栏,dom中就获取不到。默认打开在"开始"标签了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部