je joué avec, et je découvre que la propriété « accepter » semble ne pas être un Array comme le suggère le manuel du dojo. Il apparaît comme une sorte d'Object (Other than Array) dans le débogueur de chrome avec un attribut appelé "text" à la valeur 1 par défaut. L'accès comme element.accept = "";
pour le désactiver fonctionne, mais après il n'y a pas de retour à l'activer en utilisant la même méthode et en essayant quelque chose comme element.accept = ['text'];
J'ai aussi essayé d'y accéder par element.accept.text
et cela ne semblait pas marcher une fois l'objet instancié . Pour mon application, je devais autoriser un élément unique à figurer dans chaque td d'une table, et j'ai utilisé la fonction suivante pour cela et conserver l'ordre des éléments dans la table en utilisant une variante de celle listée ici. Je pensais que cela valait la peine d'être mentionné.
function changeAccept(source)
{
var element = document.getElementById(source.node.id);
console.log("element:"+element);
var element_father = element.parentNode;
var td = document.createElement("td");
td.setAttribute('id',element.id);
element_father.replaceChild(td,element);
var newsource = new dojo.dnd.Source(element.id, {accept: ['text']});
dojo.connect(newsource, "onDrop", function(source, nodes, copy) {
console.log("Dropped", newsource, source, nodes, copy);
newsource.accept = "";
changeAccept(source);
});
return newsource;
}
var priorelement = new dojo.dnd.Source(element.id, {accept: ''}); //disabled
changeAccept(priorelement); //enabled and in same position in table
Avez-vous essayé catalog.accept = ['otherValue']? Je n'ai pas vérifié ... juste une supposition ... – Philippe