You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular.js中Highchart点击事件触发后表格数据未更新问题

问题修复方案

1 修复HTML模板变量名错误

你的ng-repeat指令中变量名书写错误,多了空格,导致无法正确绑定appList变量:

<!-- 错误写法 -->
<tr ng-repeat="a in app List">{{a}}</tr>
<!-- 正确写法 -->
<tr ng-repeat="a in appList">{{a}}</tr>

2 修复Angular脏检查未触发问题

Highchart的点击事件回调是在Angular上下文之外执行的,直接修改$scope变量不会触发视图更新,需要手动触发脏检查,两种修改方案二选一即可:

方案一:在displayAppInfo函数末尾添加$scope.$apply()

$scope.displayAppInfo = function (input) {
    $scope.appStatusName = '';
    if(input == 'Unable to Complete'){
        $scope.appList = /* 你过滤后的5条结果数组 */;
    }else if(input == 'Pending'){
        $scope.appList = /* 你过滤后的4条结果数组 */;
    }else if(input == 'Completed'){
        $scope.appList = /* 你过滤后的2条结果数组 */;
    }else if(input == 'Inprogress'){ // 统一为和传入参数一致的无空格写法
        $scope.appList = /* 你过滤后的3条结果数组 */;
    }else if(input == 'All'){
        $scope.appList = /* 你全量14条结果数组 */;
        $scope.appStatusName = 'All';
    }
    // 新增这行手动触发视图更新
    $scope.$apply();
}

方案二:在Highchart点击事件中调用时包裹$apply

click: function (event) {
    $scope.$apply(() => {
        switch (event.point.category) {
            case 'Inprogress':
                $scope.displayAppInfo('Inprogress');
                break;
            case 'Completed':
                $scope.displayAppInfo('Completed');
                break;
            case 'Pending':
                $scope.displayAppInfo('Pending');
                break;
            case 'Unable to Complete':
                $scope.displayAppInfo('Unable to Complete');
                break;  
            case 'All':
                $scope.displayAppInfo('All');
                break;
        }
    })
}

3 统一状态字符串写法

当前代码中Highchart点击事件传入的状态是Inprogress(无空格),但displayAppInfo中判断的是In progress(带空格),会导致该状态下筛选失效,建议两边统一使用相同的字符串。


内容的提问来源于stack exchange,提问作者sm_dev2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:57:01