我正在使用Angular,我需要在提交表单后将用户重定向到视图页面。
我已将以下功能附加到范围:
$scope.create = function () {
return $scope.customer.$save({}, function (obj) {
Msg.show('Customer created');
return $location.path('customer/'+obj.id);
})
};
这个工作正常,用户被重定向。
我已经创建了一个封装逻辑的服务。
...
this.create = function (object, params, callback) {
return function () {
return object.$save(params, function (obj) {
Msg.show('Object created');
if ( callback instanceof Function ) {
return callback(obj);
}
});
};
};
....
所以我将它附加到这样的范围:
$scope.create = ResourceActions.create($scope.customer, {}, function (customer) {
return $location.path('customers/'+customer.id);
});
提交后,用户被重定向"只有眨眼一秒钟,然后路径会变回来。不知道发生了什么。
答案 0 :(得分:1)
您说After submit the user is "redirected" for only a blink of a second, then the path changes back.
,所以我认为它应该重定向到错误的路径,然后转到否则分支:
.otherwise({
redirectTo: '/**'
})
我建议您重新检查customer.id
是否可能是未定义的。
答案 1 :(得分:0)
我会尝试将您的$ scope更改为:
$scope.create = ResourceActions.create($scope.customer, {}, function (customer) {
$location.path('customers/'+customer.id);
});
另外,试试$ state.go。例如,让我们说你有这种状态:
.state('customers-details', {url: '/customers/:id'})
所以,你可以像这样使用$ state.go:
$scope.create = ResourceActions.create($scope.customer, {}, function (customer) {
$state.go('customers-details', {id: customer.id});
});
请记住,你必须在你的控制器中注入$ state。
再见