jQuery MiniUI

标题: miniui 不支持事件触发的解决方案 [打印本页]

作者: iamjxc    时间: 2014-11-27 13:43:57     标题: miniui 不支持事件触发的解决方案

miniui 支持注册 valuechanged 事件, 但是不支持 trigger 这个事件.
我的解决方案是, 把事件处理函数 foo() 分别注册给 miniui 和 jQuery, 这样能够支持以下2个场景:
1. 用户手工操作控件, 会通过 miniui 触发事件处理函数 foo()
2. 用代码 trigger, 会通过 jQuery 触发事件处理函数 foo()

参考代码如下:
var el = mini.get("abc");

// 注册给 miniui
el.on("valuechanged", foo);
// 注册给 jQuery
$("#abc").bind("change", foo);

function foo(){
    alert("被触发")
}

// 用代码触发
$("#abc").trigger("change");

版主们总不理解我为什么要 trigger change, 而不是直接调用 foo() 函数
我再解释一次, 我做的是开发平台, 我不知道项目组在控件上注册了哪些函数,
我要做是 trigger 控件的事件, 通知值发生了变化.
也就是说, 项目组负责注册事件, 平台负责 trigger 事件

希望普加能够给出更好的解决方案.


作者: fcrong    时间: 2014-11-27 13:54:55

1.valuechanged是一个使用频率很高的事件,你可以用tb.doValueChanged()来激发事件,不用关心事件对象的参数,内部已经处理好。

2.miniui的控件对象有fire(type, event) 方法,但是此方法一般是内部使用,开发者不需要直接使用。
  当激发一个事件时,事件对象会有很多属性,如果开发者外部激发,你其实是无法给全属性的,这样导致事件对象属性的描述与实际不符,会造成问题。
  所以不建议开发者直接使用fire方法来激发事件
作者: iamjxc    时间: 2014-11-27 14:18:16

fcrong 发表于 2014-11-27 13:54
1.valuechanged是一个使用频率很高的事件,你可以用tb.doValueChanged()来激发事件,不用关心事件对象的参 ...

// 以下代码测试通过, 感谢 fcrong
var el = mini.get("abc");

el.fire("valuechanged");
el.doValueChanged();





欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2