【问题标题】:Angular js $state.go with parameter not working带有参数的Angular js $state.go不起作用
【发布时间】:2016-06-01 10:59:09
【问题描述】:

我尝试使用参数实现 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>

有什么问题?

【问题讨论】:

  • 您正在显示home 状态并试图转到dash_home 这是一个完全不同的状态,甚至不是home 的子状态
  • home 是我当前的状态,dash_home 是我要重定向的状态

标签: javascript angularjs parameters angular-ui-router


【解决方案1】:

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

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

当然,你必须在你要去的状态的控制器中做这件事,而不是在你调用 $state.go 的控制器中

【讨论】:

  • 你能给我举个例子吗?
  • 我不太清楚你的意思。您重定向到“dash_home”状态。因此,如果此状态有一个控制器,那么您只需使用我的答案中的示例将状态参数映射到范围。问题是它无法渲染数据,因为它不知道它。您必须通过将其添加到范围来告诉它。
  • 我没有看到你调用你的函数,而且你的 state.go 使用了不存在的状态。也许你的意思只是那里的“家”?否则你必须添加正确的状态。
【解决方案2】:

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

  $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});
    }

});

谢谢大家。

【讨论】:

    【解决方案3】:

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

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

    到这里:

    params: {
          value:''
    }
    

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

    【讨论】:

    • 你能提供一个小提琴吗?
    • 你在开玩笑吗?您提供了一个带有语法错误的小提琴,并且没有添加任何脚本。另外,您使用的是$state.go('dash_home'),但正如我和@Alon Eitan 所写:$state.go('home')
    猜你喜欢
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    相关资源
    最近更新 更多