VueJS l'accès à une méthode d'une autre méthode
Je suis en utilisant VueJS de faire une simple assez de ressource de gestion du jeu/de l'interface. À la minute où je suis à la recherche d'activer le roll
fonction de chaque 12,5 secondes et utiliser le résultat dans une autre fonction.
En ce moment, je reçois l'erreur suivante:
Uncaught TypeError: Cannot read property 'roll" undefined(...)
J'ai essayé:
app.methods.roll(6);
app.methods.roll.roll(6);
roll.roll()
roll()
mais n'arrive pas à accéder à la fonction. Quiconque aucune idées de comment je pourrais faire?
methods: {
//Push responses to inbox.
say: function say(responseText) {
console.log(responseText);
var pushText = responseText;
this.inbox.push({ text: pushText });
},
//Roll for events
roll: function roll(upper) {
var randomNumber = Math.floor(Math.random() * 6 * upper) + 1;
console.log(randomNumber);
return randomNumber;
},
//Initiates passage of time and rolls counters every 5 time units.
count: function count() {
function counting() {
app.town.date += 1;
app.gameState.roll += 0.2;
if (app.gameState.roll === 1) {
var result = app.methods.roll(6);
app.gameState.roll === 0;
return result;
}
}
setInterval(counting, 2500);
...
//Activates the roll at times.
}
}
Où en êtes-vous essayer d'accéder à l'
Pas de composants à l'heure actuelle à tous. - Je activer le comte de la méthode de chargement de page, et à l'intérieur, le comte de la méthode, je suis à la recherche d'activer le déploiement de la méthode. L'appel est à l'intérieur de l'instruction if dans le comptage() fonction. Tout à l'heure actuelle est à la racine de la portée. Sera refactoring de composants une fois que j'ai les barebones la fonctionnalité complète.
roll
méthode? Est-il à l'intérieur d'un même composant? Dans un composant enfant? Un composant parent? Sœur? Ou dans un autre lieu avec une relation compliquée?Pas de composants à l'heure actuelle à tous. - Je activer le comte de la méthode de chargement de page, et à l'intérieur, le comte de la méthode, je suis à la recherche d'activer le déploiement de la méthode. L'appel est à l'intérieur de l'instruction if dans le comptage() fonction. Tout à l'heure actuelle est à la racine de la portée. Sera refactoring de composants une fois que j'ai les barebones la fonctionnalité complète.
OriginalL'auteur Jackanapes | 2016-11-20
Vous devez vous connecter pour publier un commentaire.
– Vue de l'API Guide sur
méthode
À l'intérieur d'une méthode sur une Vue d'instance, vous pouvez accéder à d'autres méthodes sur l'instance à l'aide de
this
.Pour accéder à une méthode en dehors d'une Vue d'instance, vous pouvez affecter l'instance d'une variable (comme
vm
dans l'exemple ci-dessus) et d'appeler la méthode:this
, mais pas les méthodes. A quelque chose a changé dans vuejs 2.0 ?comment êtes-vous la définition de la méthode sur le composant? La réponse ci-dessus est valable pour Vue 2.
Je faisais erreur, j'ai fait un appel ajax et essayait d'accéder application des méthodes via
this
, etvar self = this; self.method()
a fonctionné pour moi.Je vois. Aussi n'oubliez pas que, si votre projet le permet, flèche fonctions lexicales
this
, un sens vous n'avez pas à fairevar self = this;
.Viens de remarquer Vue de la documentation parler de ce que j'ai expliqué ci-dessus ainsi: Notez que vous ne devez pas utiliser une flèche de fonction pour définir une méthode (par exemple,
plus: () => this.a++
). La raison en est la flèche fonctions de lier le contexte parent, de sorte que ce ne sera pas la Vue de l'instance que vous attendez etthis.a
ne sera pas défini.OriginalL'auteur Wing
Vous pouvez utiliser
vm.methodName();
Exemple:
OriginalL'auteur Rajkumar Rajendran