怎么能干掉这个控制器(角度1.5)

时间:2017-01-31 12:22:22

标签: javascript angularjs

我有一个带按钮的组件。单击该按钮时,它会调用两个后端服务之一。调用的服务取决于组件的使用位置。到目前为止,我正在向组件控制器传递一个标志,就像这样......

<run-report is-wizard="true" </run-report>

isWizard: '<'文件中使用component.js,然后我在run-report中的按钮的点击事件中有以下代码...

run() {
    if (this.running) {
        return;
    }

    this.running = true;

    //prepare the details for the report
    const reportDetails = this.prepareReportData({
        name: this.reportName,
        settings: this.mapSettings(this.selectedSettings),
    });

    if (this.isWizard) {

        return this.BackendService
            .postWizardReport(reportDetails)
            .then(response => {
                //do stuff
            })
            .finally(() => {
                this.running = false;
            });

    } else {

        return this.BackendService
            .postMainReport(reportDetails)
            .then(response => {
                //do stuff
            })
            .finally(() => {
                this.running = false;
            });
    }
}

我不这样做,因为我正在重复代码。有谁能建议更好的方法?谢谢

1 个答案:

答案 0 :(得分:6)

如果唯一的区别是方法的名称,则使用数组语法而不是点:

var action = this.isWizard? 'postWizardReport' : 'postMainReport';
return this.BackendService
            [action](reportDetails)
            .then(response => {
                //do stuff
            })
            .finally(() => {
                this.running = false;
            });