在AngularJS中每次单击时切换两个函数

时间:2017-11-01 13:15:11

标签: javascript angularjs

这是一个html页面,每当触发ng-click时它就被称为方法:

<div ng-repeat="page in $ctrl.users">
    <main-component page="$ctrl.pageNames[page]"
                    ng-click="$ctrl.updateLegendChart($ctrl.pageNames[page])"
                    users= "$ctrl.users">
    </main-component>
</div>

ng-click调用updateLegendChart这是控制器内部的方法,如下所示:

updateLegendChart(pageNames){

    this.chartStuff.chart.unload(pageNames);
}

到目前为止,它按预期工作,unload()从图表中删除一行。

我想要做的是在我再次点击时将其添加回去。表现为灯开关。

基本上,应该在那里添加load()方法,但我没有设法创建切换功能。

我试着这样做没有成功:

updateLegendChart(pageNames){

    let aswitch = true;
    if(aswitch){
        this.chartStuff.chart.unload(pageNames);
        aswitch = false;
        return;
    }
    if(!aswitch){   
        this.chartStuff.chart.load(RandomCtrl.chartStuff.allCols[0]);
        aswitch = true;
        return;
    }
}

2 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,您必须在aswitch方法之外声明updateLegendChart,因为您不想每次都初始化它,而是在调用它。使其为您的控制器类全局,如:

class DemandCtrl {
    constructor() {
        this.aswitch = true;
    }

    updateLegendChart(pageNames) {
        if (this.aswitch) {
            this.chartStuff.chart.unload(pageNames);
        } else {
            this.chartStuff.chart.load(RandomCtrl.chartStuff.allCols[0]);
        }
        this.aswitch = !this.aswitch;
    }
}

答案 1 :(得分:0)

ES2015: 内部构造函数:

class DemandCtrl {
    constructor(ChartDataService) {
        ...
        this.aswitch = true;
    }
....