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