事情是这样的,用了avue-crud组件,配置了一个option。
现在有一列source属性要展示为 多选的下拉框 ,当然问题不在这而在于,选项是需要根据同级别属性id去拿的。也就是option.column.source 的配置中 需要该行的option.column.id作为参数。大致是这样。
如下是我问GPT的问题——这是aven-crud的option的column的项, prop为’source’的项的dicUrl如何获得另一个同样传递过来的、跟source同级的属性prop: 'id’作为参数?
{
prop: 'id',
span: 24,
type: 'input',
label: '主键',
display: false,
hide: true
},
{
prop: 'source',
span: 24,
type: 'select',
multiple: true, // 多选
label: '节点对应模块',
rules: [
{
message: '节点对应模块必须填写',
required: true
}
],
required: true,
// dicData: [{
// label: '字典1',
// value: 0
// }, {
// label: '字典2',
// value: 1
// }, {
// label: '字典3',
// value: 2
// }],
dicUrl: '/bz/node?id=???',
props: {
label: 'source',
value: 'source'
},
search: true,
searchMultiple: true,
searchLabelWidth: '35%'
},
当然GPT也没给出什么好办法,网上的很多方法也进行了尝试,总归都不行,大家可以从注释行看到做了多少尝试。。虽然更多的删掉了。
最后是从 Avue使用本地/网络数据字典 中获得了启发,解决了问题,总体而言就是 不操作dicUrl直接给dicData赋值 ,虽然理论上这种方法操作dicUrl也行得通,但是鬼知道js会不会即时加载改变的dicUrl获取数据,也懒得试了。
【解决】
-
avue-crud组件里v-model绑定一个form属性,同时在数据那里初始化返回form空对象
-
avue-crud组件里把option设为
.sync
(不知道有没有用)
-
在
watch里面监听
form.id,此时handler的val就是变化的id,handler里面有个参数是那个immediate:true
,大概是即时生效的意思,具体也不是很懂。
大致的步骤就是这样,更多的属于个人的需求了,得益于form.id一旦变化是立刻被监听到的,算是把列表查询里和增改弹窗里的下拉框各查了一次去赋值,所以watch里的操作还写不少的。虽然功能是实现了,但是有时候属实有点卡,希望是在房里连公司网络不好使的原因。。