La lecture d'un fichier local avec un fichier d'enregistrement, et le " il " de l'objet
Je suis en train d'écrire un texte dactylographié d'application de navigateur. J'ai besoin de lire le contenu d'un fichier XML, et de le stocker dans une classe. Je vais avoir des problèmes avec le " il " de l'objet. Voici ce que j'ai à ce jour:
class FileTools {
text: string;
readSingleFile(e) {
var fileName = e.target.files[0];
if (!fileName) {
return;
}
var reader = new FileReader();
reader.onload = file => {
var contents: any = file.target;
this.text = contents.result; <== Issue here. 'this' is the filereader
};
reader.readAsText(fileName);
}
start() {
document.getElementById("file-input").addEventListener("change", this.readSingleFile, false);
}
}
window.onload = () => {
var tcx = new FileTools();
tcx.start();
};
Le HTML a une boîte de sélection de fichier
input type="file" id="fichier d'entrée"
Le problème est que lorsque le fichier est chargé, à l'aide de la " il " pointe vers le fichier de lecteur, pas à ma classe. Si j'ajoute un "self" première variable comme ceci:
readSingleFile(e) {
var fileName = e.target.files[0];
if (!fileName) {
return;
}
var reader = new FileReader();
var self = this;
reader.onload = file => {
var contents: any = file.target;
self.text = contents.result; <== Issue here. 'this' is the filereader
};
reader.readAsText(fileName);
}
alors auto-points à l'entrée de la boîte (comme c'est le contexte de la méthode extérieure).
La question est donc, comment puis-je obtenir le vrai 'cette' objet de la FileTools de référence.
Grâce.
OriginalL'auteur Noam | 2015-12-30
Vous devez vous connecter pour publier un commentaire.
Dans l'ES6 et Tapuscrit même pour les méthodes de la classe de la fonction normale des règles pour ce continuent de s'appliquer.
Dans le commencer la méthode de l'envoi d'une référence à la readSingleFile fonction comme la fonction de rappel pour l'événement change.Cette fonction sera plus tard appelée dans le champ de saisie du contexte et donc de changer ce ce points.
Essayez d'utiliser une flèche de fonction au lieu de préserver le même contexte.
Cela pourrait aider à clarifier certaines choses. stackoverflow.com/questions/3127429/...
OriginalL'auteur toskv