如何在angularjs中将$ stateparam参数值重置为null?

时间:2016-03-08 11:05:54

标签: angularjs angular-ui-router

这是我的代码。

.state('appSetting.studentList', { url: '/student', views: { 'list@appSetting': { templateUrl: appUrl + '/Student/List', controller: 'StudentCtrl' } } })
                .state('appSetting.studentList.details', { url: '/:studentId', views: { 'details@appSetting': { templateUrl: appUrl + '/Student/Edit', controller: 'StudentEditCtrl' } } })

                .state('appSetting.employeeList', { url: '/employee', views: { 'list@appSetting': { templateUrl: appUrl + '/Employee/List', controller: 'EmployeeCtrl' } } })
                .state('appSetting.employeeList.details', { url: '/:employeeId', views: { 'details@appSetting': { templateUrl: appUrl + '/Employee/Edit', controller: 'EmployeeEditCtrl' } } })

我在布局上有一个添加按钮,当用户点击添加按钮时调用以下功能。

 $scope.gotoAdd = function () {
        if ($state.current.name.indexOf(".details") == -1) {
            $state.go($state.current.name + ".details")
        }
        else {
            var paramId = $state.current.url.slice(2);
            $state.go($state.current.name, ({ studentId: "", reload: true }));
        }
    };

在上面的代码工作正常,但是当打开员工页面用户点击添加按钮我想要清空employeeId参数。我有很多链接,所以如果条件使用冗长的过程。上述变量paramId动态变化(一次“studentId”,“employeeId”,..............)取决于当前状态。 我尝试了以下代码,但没有工作,因为paramId包含字符串值

 $state.go($state.current.name, ({ paramId: "", reload: true }));

3 个答案:

答案 0 :(得分:1)

$scope.gotoAdd = function () {
        if ($state.current.name.indexOf(".details") == -1) {
            $state.go($state.current.name + ".details")
        }
        else {
            for (var prop in $stateParams) {
                if ($stateParams.hasOwnProperty(prop)) {
                    $stateParams[prop] = '';
                }
            }
            $state.go($state.current.name,$stateParams, { reload: true });
        }
    };

答案 1 :(得分:0)

为什么要将第二个参数放在'()'在$ state.go()。

尝试

$ state.go($ state.current.next,{},{reload:true});

$ state.go($ state.current.next,{paramId:""},{reload:true});

答案 2 :(得分:0)

false可以使用$state.go布尔参数,该参数正是为此目的而服务的。

从UI路由器0.2.15开始-文档可能是旧版本,

  

inherit -{boolean = true},如果inherit将从当前URL继承URL参数。

实际上,它不仅将url参数重置,而且将所有true重置为默认值,就像它们在状态定义中一样。

这将仅保留通过$stateParams对象传递的状态参数,而所有其他参数均设置为默认或删除。

params