bugfix
This commit is contained in:
parent
5060f20ba8
commit
5cf93522ee
@ -144,29 +144,24 @@ bricks.widgetBuild = async function(desc, widget, data){
|
||||
}
|
||||
if (desc.hasOwnProperty('binds')){
|
||||
for (var i=0;i<desc.binds.length; i++){
|
||||
bricks.buildBind(w, desc.binds[i]);
|
||||
await bricks.buildBind(w, desc.binds[i]);
|
||||
}
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
bricks.buildBind = function(w, desc){
|
||||
bricks.buildBind = async function(w, desc){
|
||||
var widget = bricks.getWidgetById(desc.wid, w);
|
||||
if (!widget){
|
||||
cnsole.log('desc wid not find', desc);
|
||||
return;
|
||||
}
|
||||
var event = desc.event;
|
||||
bricks.buildEventBind(w, widget, event, desc);
|
||||
await bricks.buildEventBind(w, widget, event, desc);
|
||||
}
|
||||
|
||||
bricks.buildEventBind = function(from_widget, widget, event, desc){
|
||||
bricks.buildEventBind = async function(from_widget, widget, event, desc){
|
||||
var handler = bricks.universal_handler.bind(null,from_widget, widget, desc);
|
||||
if (desc.conform){
|
||||
var conform_widget = await (bricks.widgetBuild(desc.conform, widget));
|
||||
conform_widget.bind('on_conform', handler);
|
||||
handler = conform_widget.open.bind(conform_widget);
|
||||
}
|
||||
widget.bind(event, handler);
|
||||
|
||||
}
|
||||
@ -174,8 +169,18 @@ bricks.buildEventBind = function(from_widget, widget, event, desc){
|
||||
bricks.universal_handler = async function(from_widget, widget, desc, event){
|
||||
var f = await bricks.buildEventHandler(from_widget, desc, event);
|
||||
if (f){
|
||||
if (desc.conform){
|
||||
var c_desc = {
|
||||
"widgettype":"Conform",
|
||||
"options":desc.conform
|
||||
}
|
||||
var conform_widget = await bricks.widgetBuild(c_desc, widget);
|
||||
conform_widget.bind('conformed', f);
|
||||
// handler = conform_widget.open.bind(conform_widget);
|
||||
} else {
|
||||
return await f(event);
|
||||
}
|
||||
}
|
||||
bricks.debug('universal_handler() error', 'from_widget=',
|
||||
from_widget,
|
||||
'widget=', widget,
|
||||
|
@ -3,6 +3,7 @@ bricks.Conform = class extends bricks.Message {
|
||||
constructor(opts){
|
||||
opts.auto_open = true;
|
||||
opts.auto_close = false;
|
||||
opts.timeout = 0;
|
||||
super(opts);
|
||||
this.create_toolbar();
|
||||
}
|
||||
@ -29,10 +30,11 @@ bricks.Conform = class extends bricks.Message {
|
||||
}
|
||||
conform_hndl(event){
|
||||
this.dismiss();
|
||||
this.dispatch('conform');
|
||||
this.dispatch('conformed');
|
||||
}
|
||||
discard_hndl(event){
|
||||
this.dismiss();
|
||||
this.dispatch('cancelled');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,7 @@ datamethod 优先datascript,从datawidget控件中通过datamethod
|
||||
### target
|
||||
字符串或控件实例,目标控件实例,如果是字符串,使用”getWidgetById“函数获得目标控件实例
|
||||
|
||||
### confform
|
||||
### conform
|
||||
如果一个事件处理需要用户确认,可以在事件处理中指定一个conform属性来引发,当此事件发生时,会弹出一个确认窗口,用户确认后才会处理此事件,否则不处理
|
||||
|
||||
### urlwidget绑定
|
||||
@ -449,4 +449,32 @@ params:传递给事件的参数,处理函数可以使用evemt.params获得
|
||||
```
|
||||
上述例子中,在主控件的binds区域定义了btn1的按钮点击后使用event处理类型来处理btn1的click事件,即转而触发“txt1”正文控件的“gpc”事件,并定义了当”txt1“正文控件在gpc事件发生后使用script事件处理方法alert一个消息
|
||||
|
||||
## 定义需要确认的事件处理
|
||||
有时候我们需要客户确认后在处理事件,如果用户不确认,则放弃处理事件,比如在删除数据时我们通常需要用户确认一下
|
||||
例子
|
||||
```
|
||||
{
|
||||
"id":"insert",
|
||||
"widgettype":"Button",
|
||||
"options":{
|
||||
"width":"80px",
|
||||
"i18n":true,
|
||||
"label":"click me"
|
||||
},
|
||||
"binds":[
|
||||
{
|
||||
"wid":"self",
|
||||
"event":"click",
|
||||
"actiontype":"script",
|
||||
"conform":{
|
||||
"title":"conformtest",
|
||||
"message":"测试事件处理前的用户确认功能,确认码?"
|
||||
},
|
||||
"target":"self",
|
||||
"script":"alert('确认过眼神!')"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
上述例子中定义了Button的click事件使用script事件处理方式来处理,但是在处理前需要显示信息,让用户确认是否继续,如果用户放弃则不处理事件,确认后正常的处理事件。
|
||||
|
||||
|
@ -11,6 +11,10 @@
|
||||
"wid":"self",
|
||||
"event":"click",
|
||||
"actiontype":"script",
|
||||
"conform":{
|
||||
"title":"conformtest",
|
||||
"message":"测试事件处理前的用户确认功能,确认码?"
|
||||
},
|
||||
"target":"self",
|
||||
"script":"console.log(this, params, event);"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user