1045
1045
nObj . append ( html . join ( '' ) ) ;
1046
1046
} ,
1047
1047
asyncNode : function ( setting , node , isSilent , callback ) {
1048
- var i , l ;
1049
1048
var isParent = data . nodeIsParent ( setting , node ) ;
1050
1049
if ( node && ! isParent ) {
1051
1050
tools . apply ( callback ) ;
1058
1057
}
1059
1058
if ( node ) {
1060
1059
node . isAjaxing = true ;
1061
- var icoObj = $$ ( node , consts . id . ICON , setting ) ;
1062
- icoObj . attr ( { "style" : "" , "class" : consts . className . BUTTON + " " + consts . className . ICO_LOADING } ) ;
1063
- }
1064
-
1065
- var tmpParam = { } ;
1066
- var autoParam = tools . apply ( setting . async . autoParam , [ setting . treeId , node ] , setting . async . autoParam ) ;
1067
- for ( i = 0 , l = autoParam . length ; node && i < l ; i ++ ) {
1068
- var pKey = autoParam [ i ] . split ( "=" ) , spKey = pKey ;
1069
- if ( pKey . length > 1 ) {
1070
- spKey = pKey [ 1 ] ;
1071
- pKey = pKey [ 0 ] ;
1060
+ if ( setting . async . loadingIcon === false ) {
1061
+ var icoObj = $$ ( node , consts . id . ICON , setting ) ;
1062
+ icoObj . attr ( { "style" : "" , "class" : consts . className . BUTTON + " " + consts . className . ICO_LOADING } ) ;
1072
1063
}
1073
- tmpParam [ spKey ] = node [ pKey ] ;
1074
1064
}
1075
- var otherParam = tools . apply ( setting . async . otherParam , [ setting . treeId , node ] , setting . async . otherParam ) ;
1076
- if ( tools . isArray ( otherParam ) ) {
1077
- for ( i = 0 , l = otherParam . length ; i < l ; i += 2 ) {
1078
- tmpParam [ otherParam [ i ] ] = otherParam [ i + 1 ] ;
1065
+
1066
+ if ( setting . async . url ) {
1067
+ // compatible for ajax
1068
+ var i , l ;
1069
+ var tmpParam = { } ;
1070
+ var autoParam = tools . apply ( setting . async . autoParam , [ setting . treeId , node ] , setting . async . autoParam ) ;
1071
+ for ( i = 0 , l = autoParam . length ; node && i < l ; i ++ ) {
1072
+ var pKey = autoParam [ i ] . split ( "=" ) , spKey = pKey ;
1073
+ if ( pKey . length > 1 ) {
1074
+ spKey = pKey [ 1 ] ;
1075
+ pKey = pKey [ 0 ] ;
1076
+ }
1077
+ tmpParam [ spKey ] = node [ pKey ] ;
1079
1078
}
1080
- } else {
1081
- for ( var p in otherParam ) {
1082
- tmpParam [ p ] = otherParam [ p ] ;
1079
+ var otherParam = tools . apply ( setting . async . otherParam , [ setting . treeId , node ] , setting . async . otherParam ) ;
1080
+ if ( tools . isArray ( otherParam ) ) {
1081
+ for ( i = 0 , l = otherParam . length ; i < l ; i += 2 ) {
1082
+ tmpParam [ otherParam [ i ] ] = otherParam [ i + 1 ] ;
1083
+ }
1084
+ } else {
1085
+ for ( var p in otherParam ) {
1086
+ tmpParam [ p ] = otherParam [ p ] ;
1087
+ }
1083
1088
}
1089
+
1090
+ setting . async . load = function ( treeId , node ) {
1091
+ var deferred = $ . Deferred ( ) ;
1092
+ $ . ajax ( {
1093
+ contentType : setting . async . contentType ,
1094
+ cache : false ,
1095
+ type : setting . async . type ,
1096
+ url : tools . apply ( setting . async . url , [ treeId , node ] , setting . async . url ) ,
1097
+ data : setting . async . contentType . indexOf ( 'application/json' ) > - 1 ? JSON . stringify ( tmpParam ) : tmpParam ,
1098
+ dataType : setting . async . dataType ,
1099
+ headers : setting . async . headers ,
1100
+ xhrFields : setting . async . xhrFields ,
1101
+ success : function ( msg ) {
1102
+ var newNodes = [ ] ;
1103
+ try {
1104
+ if ( ! msg || msg . length == 0 ) {
1105
+ newNodes = [ ] ;
1106
+ } else if ( typeof msg == "string" ) {
1107
+ newNodes = eval ( "(" + msg + ")" ) ;
1108
+ } else {
1109
+ newNodes = msg ;
1110
+ }
1111
+ } catch ( err ) {
1112
+ newNodes = msg ;
1113
+ }
1114
+
1115
+ deferred . resolve ( newNodes ) ;
1116
+ } ,
1117
+ error : function ( XMLHttpRequest , textStatus , errorThrown ) {
1118
+ deferred . reject ( [ XMLHttpRequest , textStatus , errorThrown ] ) ;
1119
+ }
1120
+ } ) ;
1121
+
1122
+ return deferred . promise ( ) ;
1123
+ } ;
1084
1124
}
1085
1125
1086
1126
var _tmpV = data . getRoot ( setting ) . _ver ;
1087
- $ . ajax ( {
1088
- contentType : setting . async . contentType ,
1089
- cache : false ,
1090
- type : setting . async . type ,
1091
- url : tools . apply ( setting . async . url , [ setting . treeId , node ] , setting . async . url ) ,
1092
- data : setting . async . contentType . indexOf ( 'application/json' ) > - 1 ? JSON . stringify ( tmpParam ) : tmpParam ,
1093
- dataType : setting . async . dataType ,
1094
- headers : setting . async . headers ,
1095
- xhrFields : setting . async . xhrFields ,
1096
- success : function ( msg ) {
1097
- if ( _tmpV != data . getRoot ( setting ) . _ver ) {
1098
- return ;
1099
- }
1100
- var newNodes = [ ] ;
1101
- try {
1102
- if ( ! msg || msg . length == 0 ) {
1103
- newNodes = [ ] ;
1104
- } else if ( typeof msg == "string" ) {
1105
- newNodes = eval ( "(" + msg + ")" ) ;
1106
- } else {
1107
- newNodes = msg ;
1108
- }
1109
- } catch ( err ) {
1110
- newNodes = msg ;
1111
- }
1127
+ setting . async . load ( setting . treeId , node ) . then ( function ( newNodes ) {
1128
+ if ( _tmpV != data . getRoot ( setting ) . _ver ) {
1129
+ return ;
1130
+ }
1112
1131
1113
- if ( node ) {
1114
- node . isAjaxing = null ;
1115
- node . zAsync = true ;
1116
- }
1117
- view . setNodeLineIcos ( setting , node ) ;
1118
- if ( newNodes && newNodes !== "" ) {
1119
- newNodes = tools . apply ( setting . async . dataFilter , [ setting . treeId , node , newNodes ] , newNodes ) ;
1120
- view . addNodes ( setting , node , - 1 , ! ! newNodes ? tools . clone ( newNodes ) : [ ] , ! ! isSilent ) ;
1121
- } else {
1122
- view . addNodes ( setting , node , - 1 , [ ] , ! ! isSilent ) ;
1123
- }
1124
- setting . treeObj . trigger ( consts . event . ASYNC_SUCCESS , [ setting . treeId , node , msg ] ) ;
1125
- tools . apply ( callback ) ;
1126
- } ,
1127
- error : function ( XMLHttpRequest , textStatus , errorThrown ) {
1128
- if ( _tmpV != data . getRoot ( setting ) . _ver ) {
1129
- return ;
1130
- }
1131
- if ( node ) node . isAjaxing = null ;
1132
- view . setNodeLineIcos ( setting , node ) ;
1133
- setting . treeObj . trigger ( consts . event . ASYNC_ERROR , [ setting . treeId , node , XMLHttpRequest , textStatus , errorThrown ] ) ;
1132
+ if ( node ) {
1133
+ node . isAjaxing = null ;
1134
+ node . zAsync = true ;
1135
+ }
1136
+ view . setNodeLineIcos ( setting , node ) ;
1137
+ if ( newNodes && newNodes !== "" ) {
1138
+ newNodes = tools . apply ( setting . async . dataFilter , [ setting . treeId , node , newNodes ] , newNodes ) ;
1139
+ view . addNodes ( setting , node , - 1 , ! ! newNodes ? tools . clone ( newNodes ) : [ ] , ! ! isSilent ) ;
1140
+ } else {
1141
+ view . addNodes ( setting , node , - 1 , [ ] , ! ! isSilent ) ;
1142
+ }
1143
+ setting . treeObj . trigger ( consts . event . ASYNC_SUCCESS , [ setting . treeId , node , newNodes ] ) ;
1144
+ tools . apply ( callback ) ;
1145
+ } , function ( errors ) {
1146
+ if ( _tmpV != data . getRoot ( setting ) . _ver ) {
1147
+ return ;
1134
1148
}
1149
+ if ( node ) node . isAjaxing = null ;
1150
+ view . setNodeLineIcos ( setting , node ) ;
1151
+ setting . treeObj . trigger ( consts . event . ASYNC_ERROR , [ setting . treeId , node ] . concat ( errors ) ) ;
1135
1152
} ) ;
1136
1153
return true ;
1137
1154
} ,
1342
1359
fontStyle . push ( f , ":" , fontcss [ f ] , ";" ) ;
1343
1360
}
1344
1361
html . push ( "<a id='" , node . tId , consts . id . A , "' class='" , consts . className . LEVEL , node . level ,
1345
- nodeClasses . add ? ' ' + nodeClasses . add . join ( ' ' ) : '' ,
1362
+ nodeClasses . add ? ' ' + nodeClasses . add . join ( ' ' ) : '' ,
1346
1363
"' treeNode" , consts . id . A ,
1347
1364
node . click ? " onclick=\"" + node . click + "\"" : "" ,
1348
1365
( ( url != null && url . length > 0 ) ? " href='" + url + "'" : "" ) , " target='" , view . makeNodeTarget ( node ) , "' style='" , fontStyle . join ( '' ) ,
2006
2023
var children = data . nodeChildren ( setting , root ) ;
2007
2024
if ( children && children . length > 0 ) {
2008
2025
view . createNodes ( setting , 0 , children , null , - 1 ) ;
2009
- } else if ( setting . async . enable && setting . async . url && setting . async . url !== '' ) {
2026
+ } else if ( setting . async . enable && ( ! setting . async . url || ( setting . async . load && setting . async . load . then ) ) ) {
2010
2027
view . asyncNode ( setting ) ;
2011
2028
}
2012
2029
return zTreeTools ;
2016
2033
var zt = $ . fn . zTree ,
2017
2034
$$ = tools . $ ,
2018
2035
consts = zt . consts ;
2019
- } ) ( jQuery ) ;
2036
+ } ) ( jQuery ) ;
0 commit comments