UI路由器重定向表单成功

时间:2014-10-28 15:31:17

标签: angularjs angular-ui-router

我在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");
});

2 个答案:

答案 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");
            };
        }
    ]);