在angularjs中将参数从控制器发送到服务

时间:2017-10-23 11:00:32

标签: javascript angularjs

我有以下控制器:

class DemandCtrl {
    constructor(ChartDataService) {
        this.ChartDataService = ChartDataService;
        this.dataa = {
            from: 'test1',
            to: 'test2'
        };
    }

    $onInit() {
        getData.call(null, this);       
    }

}


function getData(DemandCtrl) {
    debugger;
    DemandCtrl.ChartDataService.getData().then(result => {
        DemandCtrl.result = result.data;
        getChart(result.data);
    }).catch((e) => {
        console.log(e);
    });
}


  ... other methods/functions...


DemandCtrl.$inject = ['ChartDataService'];

export const Demand = {
    bindings: {
        data: '<'
    },
    templateUrl: demandPageHtml,
    controller: DemandCtrl
};

我想将dataa中的数据作为参数提供给我的服务。

服务如下:

export default class ChartDataService {
    constructor($http, authService) {
        this.$http = $http;
        this.authService = authService;
    }
    getData() {
                return this.$http.get(`chartData?&fromDate=` + dataa.from + `&toDate=` + dataa.to)
.then(result => {
            return result;
        }).catch(() => {
            return Promise.reject('Failed to access chart data ');
        });
    }
}

ChartDataService.$inject = ['$http', 'authService'];

我尝试过的是将dataa作为参数提供给getData(),但它表示未定义。可能我不是从控制器正确发送它们但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

ChartDataService服务中,只需返回http请求,而不是展开承诺。

export default class ChartDataService {
    constructor($http, authService) {
        this.$http = $http;
        this.authService = authService;
    }
    getData(dataa) {
        return this.$http.get(`chartData?&fromDate=` + dataa.from + `&toDate=` + dataa.to) 
    }
}

现在传递这样的参数。

DemandCtrl.ChartDataService.getData(this.dataa).then(result => {
        DemandCtrl.result = result.data;
        getChart(result.data);
    }).catch((e) => {
        console.log(e);
    });