Bonjour,
J'espere que vous pourrez aider un newbe
Je sais que le sujet a déjà été traité plein de fois mais toutes les solutions trouvées pour le moment ne m'ont pas aidées.
Problème :
J'utilise 2 fonctions (A et B) l'une à la suite de l'autre et la fonction A comporte une autre fonction (X).
Le problème est que, même avec un .done(), la fonction B s'exécute avant la fonction X.
Je n'arrive pas a executer la fonction B après la fin de la fonction A, qui se termine après la fin de la fonction X.
Code :
Base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 $('.btn-add-node').click(function(){ console.log('btn add node clicked'); var actual_tree = $('#tree').treeview('getNode', 0); // $('#tree').hide(); var ref_model = $('#ref_model').text(); $(this).parent().parent().children('.modal-body').children('.col-md-8').children('.form-checkbox').children('.controls').children('label').children('input[type=checkbox]').each(function (index, value) { if (this.checked) { actual_tree = $(this).addNode($(this).getNode(), ref_model, actual_tree); // => Fonction A } else { actual_tree = $(this).removeNode(value, ref_model, actual_tree); } }); $(this).createTree([actual_tree]); // => fonction B // $('#tree').show(); $('#modal_add_nodes').modal('hide'); });
Fonction A :
Fonction X :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 /* * Add a node in the treeView */ $.fn.addNode = function(data, reference, actual_tree) { console.log('add node'); console.log(data); console.log('add ' + data.records.text + ' in ' + reference); actual_tree = insertSubNode(data.records, reference, actual_tree); return actual_tree; };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 function insertSubNode(data, reference, node) { console.log('insert sub node'); if (node.nodeId == reference) { var need_add = true; $.each(node.nodes, function(index, value) { if (data.text == value.text) { need_add = false; } }); if (need_add) { node.nodes.splice(0, 0, data); } } else if (node.hasOwnProperty('nodes')) { var new_nodes = []; $.each(node.nodes, function(index, value) { if (value.hasOwnProperty('nodes')) { new_nodes.push(insertSubNode(data, reference, value)); } else { new_nodes.push(value); } }); node['nodes'] = new_nodes; } return node; };
Partager