Angular js $ state.go,参数不起作用

时间:2016-06-01 10:59:09

标签: javascript angularjs parameters angular-ui-router

我试图用参数实现angular js $ state.go()。但$ state.go()在没有参数的情况下工作正常。但是参数它没有用。我已经尝试了很多例子,但没办法。我需要在html视图中显示参数。 我的州提供者是,

  $stateProvider
    .state('home', {
        url: '/',
        views: {
          'content@': {
            templateUrl: 'content.html',
            controller: 'dashCtrl'
          }
        },
    params: {
        obj: {
          value:''
        }
    }
      });   

和控制器是,

     dashboard.controller('dashCtrl', function ($scope, $http, $state, $stateParams){
               $state.go('dash_home', {obj: {value:'admin'}});
});

我的div是

<div>
    <h1>welcome : {{value}} || {{obj.value}}</div>

问题是什么。?

3 个答案:

答案 0 :(得分:2)

您不能直接在HTML中使用参数。您首先必须将其添加到范围(或虚拟模型,如果您使用它),例如

$scope.obj = $state.current.params.obj

你必须在你要去的州的控制器中这样做,而不是那些你称之为$ state.go的那个。

答案 1 :(得分:1)

我发现了自己的错误。正确的代码是,

  $stateProvider
    .state('home', {
        url: '/',
        views: {
          'content@': {
            templateUrl: 'content.html',
            controller: 'dashCtrl'
          }
        },
    params: {
          value:''
    }
      });

控制器是,

dashboard.controller('mycontroller',function($scope, $http, $state, $stateParams){

    $scope.user=$state.params.registerData;

    $scope.redirect=function()
    {
      $state.params.registerData='mycontent';

      $state.go('dash_home', {registerData:$state.params.registerData});
    }

});

谢谢大家。

答案 2 :(得分:0)

我猜你不能在params中使用对象。只需替换

params: {
    obj: {
      value:''
    }
}

到此:

params: {
      value:''
}

还有:$state.go('dash_home', {obj: {value:'admin'}});$state.go('home', {value:'admin'});