2016-09-30 14 views
0

私は製品コンポーネントと製品所有者コンポーネントを持っています。各製品には、私はAPIエンドポイントを呼び出すことにより、製品のリストを受け付けておりますVueJS Promiseが失敗しています

やろうとしていますどのような所有者に

を持つことになります。約束が解決されたら、私は製品のリストを持っています。各製品にはOwnerIDがあります。私は別のAPIエンドポイントを呼び出して、所有者の名前を取得し、それを反復されている現在の製品に割り当てようとしています。

マイコードこれまで私は、私は次のエラー

Uncaught TypeError: Cannot read property 'then' of undefined 
Uncaught (in promise) TypeError: Promise resolver undefined is not a function(…) 

を得続けることをやろうとしていたときに、私は今

に直面しています

<script> 
    var config = require('../config'); 
    export default { 
     data() { 
      return { 
       products: [], 
      } 
     }, 
     ready() { 
      this.getProducts().then(t => { 
       console.log(t); 
      }); 
     }, 
     methods : { 
      getProducts : function() { 
       let url = config.API.GetProduct 

       this.$http.get(url).then(response=> { 
        this.products = response.data.resource; 
        var p = this.products.map(this.getOwner); 
        return Promise.all(p); 

       }, error=> { 
        console.error("An error happened!") 
       }); 
      }, 
      getOwner : function(product) { 
       let url = config.API.GetProductOwnerName.replace('[$$$]', product.OwnerID); 
       var p = new Promise(); 

       this.$http.get(url).then(response => { 
        product.OwnerID = response.data.resource[0].OwnerName; 
        p.resolve(currentObj); 
       }); 

       return p; 

      } 
     } 
     components: {} 
    } 
</script> 

エラー誰かが私がここで間違っていることを教えてもらえますか?

ありがとうございました

答えて

0

新しい約束事オブジェクトを再作成する必要はありません。次の呼び出しに渡すオブジェクトを返すことができます。

getProducts: function() { 
    let url = config.API.GetProduct 

    return this.$http.get(url).then(response => { 
     this.products = response.data.resource; 
     return this.products.map(this.getOwner); 
    }, error=> { 
     console.error("An error happened!") 
    }); 
}, 
+0

ありがとうございます。しかし、私はまだ同じ問題を抱えています。 – Gagan

+0

@Gaganは私にとってはうまく見えます。https://jsfiddle.net/3q5cwuha/ – Hkan

+0

あなたのコードを見ました。その方法でも私のコードが動作しています。私が本当にやりたいことは、私がIMOに約束した商品をたくさん持っているからです。あなたのケースでは、非常に小さなオブジェクトのため、約束が迅速に解決され、メッセージが表示されます。私は間違っているかもしれませんが、それは私の考えです。 – Gagan

関連する問題