amis icon indicating copy to clipboard operation
amis copied to clipboard

crud 表格等集合类型的组件 怎么主动从外部 修改某一行的数据

Open lhtuling opened this issue 3 years ago • 5 comments

比如事件动作 触发自定义 JS 或者通过某一个动作实现

查遍文档没找到相关的

只想在前端临时性的修改数据 不需要用到Api提交后端这样的效果

lhtuling avatar Aug 31 '22 14:08 lhtuling

https://aisuda.bce.baidu.com/amis/examples/event/table 找到了个修改行选中的,,,,,

lhtuling avatar Aug 31 '22 14:08 lhtuling

但是只能针对table用 crud不能用

https://aisuda.bce.baidu.com/amis/examples/event/table 找到了个修改行选中的,,,,,

lhtuling avatar Aug 31 '22 14:08 lhtuling

可以在自定义js里面看看,props.store.updateData,我一般就直接用这个方法来更新作用域数据。

但是现在我也很迷惑,props上面的store,formStore,rootStore有啥区别

luanwulin avatar Sep 01 '22 07:09 luanwulin

mStore,rootStore

嗯这些我也用过 但是 这些并不适合用于修改某一行数据这种情况 比如crud里面要对指定的某一行做数据临时修改 纯前端的 不做后端处理那种 就搞不定

formStore 只能在表单下面的组件触发事件时候有 store好像是基本有数据域的都有吧
rootStore这个没用过 回头看看

而且还有一个修改方式是 全局暴漏

var amisScoped;
amisScoped.getComponentById("")
amisScoped.getComponentByName("")

对指定组件进行各种自定义js操作 也很方便

lhtuling avatar Sep 11 '22 08:09 lhtuling

hhhhhhhh 想想也是搞笑~~ 一点一点测试用这个奇葩方式解决 原理是直接先修改数据 然后通过 自带的切换多选的方法 切换2次。。。 就会触发这行数据重新渲染 然后就显示正常了。。。。 如果能给个主动刷新 主动重新渲染的方法就更好了

onClick: (e, props) => {
    var bb= props.store.rows[0];
    bb.data.Title=333;
    bb.toggle();
    bb.toggle();
},

这个方式可以对点击行的选中效果进行切换 但是现在想对其他列数据进行修改 并实时渲染到表格里面

lhtuling avatar Sep 11 '22 09:09 lhtuling