2017-12-26 24 views
1

Service in Controllerからデータにアクセスする際に問題があります。 Here`s私のサービスのファイルコード:TypeScriptで角度1.6を使用してサービスからデータを取得できません

import {IHttpService} from 'Angular'; 

export class MyService { 
public static $inject = ['$http']; 
constructor(private $http:IHttpService, private getItems){ 

this.getItems= function() { 
    this.$http.get('items.json').then(function(response){ 
    if(err){ 
     console.error(err); 
    } 
    console.log(response.data); 
    return response.data; 
    }); 
}}} 

そしてController`sファイルコード:

import {MyService} from './MyService'; 
export class MyController { 
public:getData; 
static inject: Array<string> = ['$http', '$scope', 'MyService']; 
constructor(private $http:ng.IHttpService, private $scope:any, private MyService:any){ 
    this.getData = function(){ 
     MyService.getItems.then(function (data) { 
     this.getItems = data; 

     console.log(data); 
    }); 
    } 

} 

誰も私が私のコードで間違って何の `s説明できますか?ありがとう。

答えて

0

関数宣言を以下のように変更するか、(コンテキスト)を保存するようにArrow関数を使用してください。また、getItemsメソッドから$http約束を返さなければなりません。それ以外の場合は.thenメソッドをチェーン約束に適用することはできません。

getItems() { 
    //return promise here. 
    return this.$http.get('items.json').then((response) => { 
    if(err){ 
     console.error(err); 
    } 
    console.log(response.data); 
    //returning data to chained promise. 
    return response.data; 
    }); 
} 
+1

する必要があります!あなたは速い仲間でした – Sajeetharan

+0

仲間ありがとうございますが、まだ動作していません( –

+0

Downvoterはあなたがdownvoted理由はありますか?ありがとう –

0

戻りgetItemsメソッド内部の約束、それはハハ、

this.getItems= function() { 
    return this.$http.get('items.json').then(function(response){ 
    if(err){ 
     console.error(err); 
    } 
    console.log(response.data); 
    return response.data; 
    }); 
}}} 
+0

仲間ありがとう、それでも作業(( –

関連する問題