我在AngularJS应用程序中使用UI路由器。发布表单时,我想加载另一个页面。
我已尝试过以下代码。 console.log(data)工作正常,但$state.go('brands')
没有错误。
$http({
...
.success(function (data) {
console.log(data);
$state.go('brands');
})
UPDATE!找到解决方案。表单提交是以模态进行的,并且在加载新页面时没有隐藏:
$('#confirm_delete').modal('hide');
$('#confirm_delete').on('hidden.bs.modal', function (e) {
$state.go("brands");
});
答案 0 :(得分:4)
此方案应该有效。没有任何反对 UI-Router
州。我创建了一个示例plunker
// two states
app.config(['$stateProvider',function($stateProvider){
$stateProvider
.state('main',{
url: '/',
templateUrl:"tpl.main.html",
controller: 'MainCtrl',
})
.state('brands',{
url: '/brands',
template:"<p> sent.</p>"
})
}]);
这是一个控制器,带有发送动作......重定向到品牌状态
app.controller('MainCtrl', ['$scope', '$http', '$state'
,function($scope, $http, $state){
$scope.user = { name : "John" }
$scope.send = function(){
$http.get("dummy.json", { params : $scope.user } )
.success(function(data){
$state.go("brands");
})
}
}]);
检查它,你会看到它正在工作(它使用Get发送模型,但......同样适用于POST)。检查here
答案 1 :(得分:0)
您应该使用$ location.url(“/ brands”)
喜欢这个:
angular.module('appName').controller('ThisCtrl', [
'$scope', '$location',
function ($scope, $location) {
$scope.dothis = function(){
$location.url("/brands");
};
}
]);