2017-07-17 4 views
1

désolé pour mon anglais, ceci est ma première question ici. J'ai des problèmes pour appeler la méthode updateItems à partir du bloc de résultat de la requête d'analyse. Les deux méthodes appartiennent à la même classe. Lorsque j'effectue la recherche, le premier journal de la console est le seul qui apparaît dans la console. Toute méthode de classe que j'essaie d'appeler dans le bloc de succès ne fait rien.Appeler les méthodes de classe dans le bloc de résultat de requête d'analyse en Javascript

handleIngredientQuery(text) { 
    var Ingredient = Parse.Object.extend('Ingredient'); 
    var query = new Parse.Query(Ingredient); 
    query.startsWith('name', text.toLowerCase()); 

    query.find({ 
    success: function (results) { 
     console.log('Found ' + results.length); 
     this.updateItems(results); 
     console.log('finish success callback'); 
    }, 

    error: function (error) { 
     alert('Error: ' + error.code + ' ' + error.message); 
    }, 
    }); 
} 

updateItems(results) { 
    console.log('update items called'); 
    this.setState({ items: results },() => { 
    console.log('callback'); 
    console.log(this.state); 
    }); 
} 

Répondre

1

this est dans un champ différent pour votre fonction de succès. Pour obtenir this de se comporter comme vous l'attendez, utilisez la syntaxe "grosse flèche" comme suit:

query.find({ 
    success: (results) => { 
     console.log('Found ' + results.length); 
     this.updateItems(results); 
     console.log('finish success callback'); 
    },