2017-07-03 4 views
0

Ich versuche, den Datenspeicher innerhalb der Funktion THEN() erneut aufzurufen, um Daten vom zweiten DS basierend auf der Gründung des ERSTEN Datenspeichers abzurufen, aber "this" ist in der Funktion THEN() nicht verfügbar. Wie man etwas ähnlich dem folgenden Beispiel tut. Der zweite Aufruf von this.store.findRecord funktioniert nicht?Wie verschachtelter Aufruf von DataStore in emberJS?

actions:{ 

    onBookStoreSelect(bookstore){ 

      console.log(bookstore.id); 
      this.store.findRecord('boston_city_bookstores', bookstore.id).then(function(response){ 
       console.log(response); 
       console.log(response.get('bookstore_address')); 
       console.log(response.get('bookstore_owner')); 
       console.log(response.get('bookstore_key_ID')); 

       this.store.findRecord('books', response.get('bookstore_key_ID')).then(function(bookList){ 

        //do something 
      }); 

Antwort

0

Sie können die Pfeilfunktion verwenden, um this Referenz beizubehalten.

onBookStoreSelect(bookstore) {   
     return this.store.findRecord('boston_city_bookstores', bookstore.id).then((response) => {    
      return this.store.findRecord('books', response.get('bookstore_key_ID')).then((bookList) => { 
       //do something and return the result if you are using it in caller place. 
      }); 
     }); 
    } 

Siehe:
http://es6-features.org/#Lexicalthis https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions