获取$ stateParams而不使用ui-nav

时间:2016-01-10 18:12:43

标签: javascript angularjs angular-ui-router

你能以某种方式收到$ stateParams而你的html中没有<ui-view> - 标签吗?

基本上,我希望这段代码能够运作:

.config([
  '$locationProvider',
  '$stateProvider',
function($locationProvider, $stateProvider) {

  $locationProvider.html5Mode(true);

  $stateProvider
  .state('schedules_show', {
    name: 'edit_schedule',
    url: '/schedules/:id/edit'
  });

}])

所以我可以从通过$ stateParams调用的任何其他控制器中获取:id。

更多澄清:我不想使用$ stateParams来生成链接或移动我的应用程序,因为我的应用程序是RoR和Angular.js的混合体。我用公共链接更改服务器端的视图。我只想使用angular-ui-router从URL中获取一些值,以便在我的应用程序的Angular.js部分中使用(在本例中为:id)。因为我不想通过Angular导航并且不想使用它的状态依赖控制器或视图,这也是我不想在我的HTML中使用<ui-view> - 标记的原因。 / p>

问题已解决:我认为我通过angular-ui-router的做法是错误的。我现在有一个解决方案,我只是将HTML中的参数从ng-init传递给控制器​​,但它没有回答我的问题,所以我认为应该关闭它。

1 个答案:

答案 0 :(得分:0)

如果我理解你,你需要国家参数。 qnswer是:是的,你可以。第一种方法是使用url params:/url/suburl/:param1/:param2/:paramN。第二种方式(如果你不想在URL中看到你的参数)在你的州使用params选项。然后用里面的这个参数调用你的状态。示例:

.state('schedules_show', { name: 'state1', url: '/state', params: { param1: null, param2: null } });

这里,状态配置null是指不分配初始值;并用

调用此状态

ui-sref="state1({ param1: 'test', param2: 10 })"

然后在注入的$stateParams对象中,您可以获得这些参数的值

另一种可能的解决方案是在您所在的州使用resolve为您指定的状态的控制器提供特定的参数

有关resolve

的更多信息

有意义吗?