jQuery MiniUI

 找回密码
 立即注册
查看: 2792|回复: 3
打印 上一主题 下一主题

doValueChanged触发问题 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2021-6-28 16:21:49 |只看该作者 |倒序浏览
循环触发doValueChanged;打印顺序是a,b,0,1,并非是a,0,b,1,怎么才能边塞值边触发valuechanged方法?

<input class="mini-combobox" id="a" style="width:150px;" textField="text" valueField="id"  showNullItem="true" allowInput="true"/>
<input class="mini-combobox" id="b" style="width:150px;" textField="text" valueField="id"  showNullItem="true" allowInput="true"/>

var aiCommon=["a","b"];
$.each(aiCommon,function(index,porp){
        var mini_obj = mini.get(porp);
        mini_obj.setValue(aiFormJson[porp]);
console.log(porp);
        mini_obj.doValueChanged();
})
mini.get("a").on('valuechanged',function(e){
console.log(0);
})
mini.get("b").on('valuechanged',function(e){
console.log(1);
})

Rank: 6Rank: 6

沙发
发表于 2021-6-28 17:16:54 |只看该作者
valuechanged事件是异步的,循环结束才会执行
要不试试递归?
  1. mini.get("a").on('valuechanged', function (e) {
  2.     a_valuechanged()
  3.   })
  4.   mini.get("b").on('valuechanged', function (e) {
  5.     b_valuechanged()
  6.   })

  7.   var aiCommon = ["a", "b"];
  8.   var aiFormJson = { 'a': 1, 'b': 1 }
  9.   var num = 0
  10.   var num_max = aiCommon.length - 1
  11.   events()


  12.   function events() {
  13.     if (num > num_max) return
  14.     var mini_input = mini.get(aiCommon[num])
  15.     console.log(aiCommon[num])
  16.     mini_input.setValue(aiFormJson[aiCommon[num]])
  17.     eval(aiCommon[num] + `_valuechanged(
  18.       function (fn) {
  19.         num = num + 1
  20.         events()
  21.       }
  22.     )`)
  23.   }

  24.   function a_valuechanged(fn) {
  25.     console.log(0)
  26.     if (fn) fn()
  27.   }

  28.   function b_valuechanged(fn) {
  29.     console.log(1)
  30.     if (fn) fn()
  31.   }
复制代码
或者自己写事件队列

Rank: 2

板凳
发表于 2021-6-29 10:52:55 |只看该作者
谢谢。
onvaluechanged是已有的,每个页面的下拉都是独立方法,不能改动。我是写的一个通用功能,去塞不同页面上的这种级联下拉,这个地方我只做塞值和手动触发下valuechanged的动作

Rank: 6Rank: 6

地板
发表于 2021-6-29 15:39:55 |只看该作者
shixiaoyan0612 发表于 2021-6-29 10:52
谢谢。
onvaluechanged是已有的,每个页面的下拉都是独立方法,不能改动。我是写的一个通用功能,去塞不同 ...

只能直接调用 onvaluechanged触发的方法!  如果每个页面的不一样,你得写个公用方法了!

Archiver|普加软件

GMT+8, 2024-5-15 00:00 , Processed in 1.039796 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部