如何在用户更新AngularJs中的控制器时刷新$state

How to refresh $state when user update the controller in AngularJs?

本文关键字:控制器 刷新 state 用户 更新 AngularJs      更新时间:2024-06-27

我正在使用Angular UI Router,希望重新加载当前状态并刷新当前状态的所有数据/重新运行控制器。

如何使用$state.reload()$stateParams用新数据重新加载状态?

app.js

.state('app.editControl', {
            url: '/edit/control',
            params: { controlId: null,processId: null, from: null, controlInProcessKey:null, refresh:null},
            templateUrl: 'views/control/createNewControl.html',
            controller: 'CreateControlCtrl',
            data: {
                authenticate: true
            },

ctrl.js

$scope.updateCallBack = function() {
    setInterval(function() {
        $scope.statusInfo = '';
    }, 1000);
    if ($scope.editControlToRisk) {
        console.log('EDITCONTROL');
        if ($scope.controlDTO.controlInProcessDTO.processKey) {
            $state.go('app.alignCtrlToProcess', {
                controlId: $scope.controlDTO.controlKey,
                controlInProcessKey: $scope.controlDTO.controlInProcessDTO.controlInProcessKey,
                processId: $scope.controlDTO.controlInProcessDTO.processKey
            });
        } else {
            $state.go('app.home');
        }
    } else {
        console.log('EDIT');
        $state.go($state.current, {
            controlId: $stateParams.controlId
        }, {
            reload: true
        });
        $scope.selectedAlignProcesses = new Date().getTime();
    }
};

您可以尝试

$state.go($state.current, $stateParams, {reload: true});// can check with inherit {reload: true, inherit: false}

并且应该在$state.go 之前使用$scope.selectedAlignProcesses = new Date().getTime();