Come accedere all'oggetto di contesto come un array nel callback di PageMethods
-
03-07-2019 - |
Domanda
Non riesco ad accedere all'oggetto di contesto usando un contesto di loop impostato: var context = [id1, id2, id3];
Questa funzione di richiamata funziona:
function OnChangeSucceeded(result, context, methodName) {
document.getElementById(context[0]).disabled = result;
document.getElementById(context[1]).disabled = result;
document.getElementById(context[2]).disabled = result;
}
Questa funzione di richiamata ha esito negativo:
function OnChangeSucceeded(result, context, methodName) {
for(var indx = 0; indx < context.length; indx++) {
document.getElementById(context[indx]).disabled = result;
}
}
Soluzione 3
Questo è il puntatore a firebug tvanfosson.
Ho rifatto la funzione e ora funziona come:
function OnChangeSucceeded(result, context, methodName) {
for (controlId in context) {
document.getElementById(context[controlId]).disabled = result;
}
}
Non sono sicuro che fosse perché il contesto era originale creato come:
context = [id1, id2, id3];
che ora ho sostituito con:
context = new Array(id1, id2, id3);
Altri suggerimenti
Sarebbe utile vedere il codice chiamante in modo da poter vedere come viene stabilito il tuo contesto. Immagino che tu l'abbia impostato come un'associazione e non come un array in modo tale che quando vai a usarlo nel callback, non ci sono proprietà di lunghezza (o è 0).
Quando lo configuri dovrebbe apparire come:
var context = new Array();
context[0] = 'elem0';
context[1] = 'elem1';
context[2] = 'elem2';
non
var context = {0: 'elem0', 1: 'elem1', 2: 'elem2'};
Se questo non è il problema, prova a controllarlo in FireFox / FireBug impostando un punto di interruzione nella funzione onChangeSucceeded ed esaminando l'oggetto di contesto effettivo per vedere quali proprietà ha.
È a causa del tuo errore di battitura?
for(var index = 0; indx < context.length; indx++) {
dovrebbe essere
for(var indx = 0; indx < context.length; indx++) {