javascript - pasar - vue router matched
VueJS accediendo a un método desde otro método. (2)
Estoy usando VueJS para hacer un juego / interfaz de administración de recursos lo suficientemente simple. En el momento en que estoy buscando activar la función de roll
cada 12.5 segundos y usar el resultado en otra función. Por el momento aunque sigo recibiendo el siguiente error:
Error de tipo no capturado: no se puede leer la propiedad ''roll'' de undefined (...)
Yo he tratado:
-
app.methods.roll(6);
-
app.methods.roll.roll(6);
-
roll.roll()
-
roll()
pero parece que no puede acceder a la función. ¿Alguien tiene alguna idea de cómo podría lograr esto?
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.
}
}
Puede acceder a estos métodos directamente en la instancia de VM o usarlos en expresiones directivas. Todos los métodos tendrán
this
contexto automáticamente vinculado a la instancia de Vue.
- Vue API Guide sobre los methods
Dentro de un método en una instancia de Vue, puede acceder a otros métodos en la instancia usando this
.
var vm = new Vue({
...
methods: {
methodA() {
// Method A
},
methodB() {
// Method B
// Call `methodA` from inside `methodB`
this.methodA()
},
},
...
});
Para acceder a un método fuera de una instancia de Vue, puede asignar la instancia a una variable (como vm
en el ejemplo anterior) y llamar al método:
vm.methodA();
Puedes usar vm.methodName();
Ejemplo:
let vm = new Vue({
el: ''#app'',
data: {},
methods: {
methodA: function () {
console.log(''hello'');
},
methodB: function () {
// calling methodA
vm.methodA();
}
},
})