Skip to content

Commit eadc43f

Browse files
up Bizs.FormLogic
1 parent 32230a1 commit eadc43f

File tree

12 files changed

+361
-91
lines changed

12 files changed

+361
-91
lines changed

bizs/FormLogic/FormLogic.js

Lines changed: 76 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,12 @@
7474
}</pre>
7575
* </dd>
7676
*
77-
* <dt>formConfirmPopupType = string, default = dialog</dt>
77+
* <dt>formPopupType = string, default = dialog</dt>
7878
* <dd>定义提示框的类型: dialog, popup</dd>
7979
*
80+
* <dt>formConfirmPopupType = string, default = dialog</dt>
81+
* <dd>定义确认提示框的类型: dialog, popup</dd>
82+
*
8083
* <dt>formResetUrl = url</dt>
8184
* <dd>表单重置时, 返回的URL</dd>
8285
*
@@ -560,7 +563,7 @@ window.parent
560563
if( _fatalError ){
561564
var _msg = JC.f.printf( '服务端错误, 无法解析返回数据: <p class="auExtErr" style="color:red">{0}</p>'
562565
, _data );
563-
JC.Dialog && JC.Dialog.alert ? JC.Dialog.alert( _msg, 1 ) : alert( _msg );
566+
_p.trigger( 'SHOW_POPUP', [ _p._model.formPopupType(), _msg, null, 1 ] );
564567
return;
565568
}
566569

@@ -582,10 +585,12 @@ window.parent
582585
, _p
583586
);
584587

588+
/*
585589
_p._model.formResetAfterSubmit()
586590
&& !_p._model.userFormAjaxDone()
587591
&& _resetBtn.length
588592
&& _p.selector().trigger('reset');
593+
*/
589594

590595
});
591596
/**
@@ -606,13 +611,17 @@ window.parent
606611
_btn && ( _btn = $( _btn ) );
607612
if( !( _btn && _btn.length ) ) return;
608613

609-
var _popup;
614+
var _popup, _type = _p._model.formConfirmPopupType( _btn ) || 'dialog';
615+
_type += '.confirm';
616+
_popup = _p.triggerHandler( 'SHOW_POPUP', [ _type, _p._model.formSubmitConfirm( _btn ), _btn, 2 ] );
610617

618+
/*
611619
if( _p._model.formConfirmPopupType( _btn ) == 'dialog' ){
612620
_popup = JC.Dialog.confirm( _p._model.formSubmitConfirm( _btn ), 2 );
613621
}else{
614622
_popup = JC.confirm( _p._model.formSubmitConfirm( _btn ), _btn, 2 );
615623
}
624+
*/
616625

617626
_popup.on('confirm', function(){
618627
_p.selector().data( FormLogic.Model.SUBMIT_CONFIRM_BUTTON, null );
@@ -647,13 +656,17 @@ window.parent
647656
_btn && ( _btn = $( _btn ) );
648657
if( !( _btn && _btn.length ) ) return;
649658

650-
var _popup;
659+
var _popup, _type = _p._model.formConfirmPopupType( _btn ) || 'dialog';
660+
_type += '.confirm';
661+
_popup = _p.triggerHandler( 'SHOW_POPUP', [ _type, _p._model.formResetConfirm( _btn ), _btn, 2 ] );
651662

663+
/*
652664
if( _p._model.formConfirmPopupType( _btn ) == 'dialog' ){
653665
_popup = JC.Dialog.confirm( _p._model.formResetConfirm( _btn ), 2 );
654666
}else{
655667
_popup = JC.confirm( _p._model.formResetConfirm( _btn ), _btn, 2 );
656668
}
669+
*/
657670

658671
_popup.on('confirm', function(){
659672
_p.selector().data( FormLogic.Model.RESET_CONFIRM_BUTTON, null );
@@ -694,6 +707,41 @@ window.parent
694707
_p._model.formResetCallback() && _p._model.formResetCallback().call( _p.selector(), _srcEvt, _p );
695708
}, _p, 'asdfawerasdfase_reset', 100 );
696709
});
710+
711+
712+
_p.on( 'SHOW_POPUP', function( _evt, _type, _str, _src, _status, _cb ){
713+
_type = ( _type || '' ).toLowerCase();
714+
var _popup;
715+
716+
switch( _type ){
717+
case 'dialog.confirm': {
718+
_popup = JC.Dialog.confirm( _str, _status, _cb );
719+
break;
720+
}
721+
case 'popup.confirm': {
722+
_popup = JC.confirm( _str, _src, _status, _cb );
723+
break;
724+
}
725+
case 'popup.msgbox': {
726+
_popup = JC.msgbox( _str, _src, _status, _cb );
727+
break;
728+
}
729+
case 'dialog.msgbox': {
730+
_popup = JC.Dialog.msgbox( _str, _status, _cb );
731+
break;
732+
}
733+
case 'popup': {
734+
_popup = JC.alert( _str, _src, _status, _cb );
735+
break;
736+
}
737+
default: {
738+
_popup = JC.Dialog.alert( _str, _status, _cb );
739+
break;
740+
}
741+
}
742+
743+
return _popup;
744+
});
697745
}
698746
, _inited:
699747
function(){
@@ -999,6 +1047,7 @@ window.parent
9991047
var _form = $(this)
10001048
, _panel
10011049
, _url = ''
1050+
, _type = _p._model.formPopupType() + '.msgbox';
10021051
;
10031052

10041053
_json.data
@@ -1009,19 +1058,21 @@ window.parent
10091058
&& ( _url = _json.url )
10101059
;
10111060

1061+
10121062
if( _json.errorno ){
1013-
_panel = JC.Dialog.alert( _json.errmsg || '操作失败, 请重新尝试!', 1 );
1063+
_p.triggerHandler( 'SHOW_POPUP', [ _type, _json.errmsg || '操作失败, 请重新尝试!', _btn, 1 ] );
10141064
}else{
1015-
_panel = JC.Dialog.msgbox( _json.errmsg || '操作成功', 0, function(){
1065+
_panel = _p.triggerHandler( 'SHOW_POPUP', [ _type, _json.errmsg || '操作成功', null, 0, function(){
10161066
_url = _url || _p._model.formAjaxDoneAction();
10171067
if( _url ){
10181068
try{_url = decodeURIComponent( _url ); } catch(ex){}
10191069
/^URL/.test( _url) && ( _url = JC.f.urlDetect( _url ) );
10201070
JC.f.reloadPage( _url );
10211071
}
1022-
}, _p._model.formPopupCloseMs() );
1072+
}, _p._model.formPopupCloseMs() ] );
10231073
}
10241074
}
1075+
10251076
, formPopupCloseMs:
10261077
function( _btn ){
10271078
var _p = this
@@ -1068,13 +1119,28 @@ window.parent
10681119

10691120
, formConfirmPopupType:
10701121
function( _btn ){
1071-
var _r = this.stringProp( 'formConfirmPopupType' ) || 'dialog';
1122+
var _r = this.stringProp( 'formConfirmPopupType' );
10721123
_btn && ( _btn = $( _btn ) ).length
10731124
&& _btn.is('[formConfirmPopupType]')
10741125
&& ( _r = _btn.attr('formConfirmPopupType') )
10751126
;
1127+
1128+
_r = _r || this.formPopupType( _btn );
1129+
1130+
return _r.toLowerCase();
1131+
}
1132+
1133+
, formPopupType:
1134+
function( _btn ){
1135+
var _r = this.stringProp( 'formPopupType' ) || 'dialog';
1136+
1137+
_btn && ( _btn = $( _btn ) ).length
1138+
&& _btn.is('[formPopupType]')
1139+
&& ( _r = _btn.attr('formPopupType') )
1140+
;
10761141
return _r.toLowerCase();
10771142
}
1143+
10781144
, formResetUrl:
10791145
function(){
10801146
var _p = this
@@ -1115,7 +1181,6 @@ window.parent
11151181
_msg = $( _item ).attr( 'datavalidFormLogicMsg' ) || _msg;
11161182
return _msg;
11171183
}
1118-
11191184
});
11201185

11211186
JC.f.extendObject( FormLogic.View.prototype, {
@@ -1172,8 +1237,8 @@ window.parent
11721237
if( JC.f.parseBool( _status ) ) return;
11731238

11741239
if( _p._model.showDataValidError( _item ) ){
1175-
//JC.msgbox( _p._model.datavalidFormLogicMsg( _item ), _item, 2 );
1176-
JC.Dialog.msgbox( _p._model.datavalidFormLogicMsg( _item ), 2 );
1240+
var _popupType = _p._model.formPopupType() + '.msgbox';
1241+
_p.triggerHandler( 'SHOW_POPUP', [ _popupType, _p._model.datavalidFormLogicMsg( _item ), _item, 2 ] );
11771242

11781243
JC.f.safeTimeout( function(){
11791244
_item.trigger( 'blur' );
@@ -1182,7 +1247,6 @@ window.parent
11821247
return false;
11831248
});
11841249
}
1185-
11861250
});
11871251

11881252
$(document).delegate( 'input[formSubmitConfirm], button[formSubmitConfirm]', 'click', function( _evt ){

comps/BaseMVC/BaseMVC.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
$([ _p._view, _p._model ] ).on('TriggerEvent', function( _evt, _evtName ){
4646
var _data = JC.f.sliceArgs( arguments ).slice( 2 );
47-
_p.trigger( _evtName, _data );
47+
return _p.triggerHandler( _evtName, _data );
4848
});
4949

5050
_p._beforeInit();
@@ -300,6 +300,20 @@
300300
$( this ).trigger( 'TriggerEvent', _args );
301301
return this;
302302
}
303+
/**
304+
* 使用 jquery trigger 触发 controler 绑定事件( 有换回数据 )
305+
* @method {string} trigger
306+
* @param {string} _evtName
307+
* @param {*|Array} _args
308+
* @return {*}
309+
*/
310+
, triggerHandler:
311+
function( _evtName, _args ){
312+
_args = _args || [];
313+
!jQuery.isArray( _args ) && ( _args = [ _args ] );
314+
_args.unshift( _evtName );
315+
return $( this ).trigger( 'TriggerEvent', _args );
316+
}
303317
/**
304318
* 通知选择器有新事件
305319
* @method notification
@@ -623,6 +637,13 @@
623637
$( this ).trigger( 'TriggerEvent', _args );
624638
return this;
625639
}
640+
, triggerHandler:
641+
function( _evtName, _args ){
642+
_args = _args || [];
643+
!jQuery.isArray( _args ) && ( _args = [ _args ] );
644+
_args.unshift( _evtName );
645+
return $( this ).trigger( 'TriggerEvent', _args );
646+
}
626647
, notification:
627648
function( _evtName, _args ){
628649
this._model.notification( _evtName, _args );

deploy/bizs/FormLogic/FormLogic.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)