这是我的代码。
.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 }));
答案 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