当前位置: 首页 > 面试题库 >

角UI路由器| $ stateParams不起作用

艾志尚
2023-03-14
问题内容

似乎$stateParams无法正常工作。通过日期是这样的:

$state.go('state2', { someParam : 'broken magic' });

在目标状态上忽略参数

console.log('state2 params:', $stateParams); // return empty object {}

码:

    var app = angular.module('app', [
     'ui.router'
    ]);

    app.config(function($stateProvider) {
      $stateProvider
            .state('state1', {
                url: '',
                templateUrl: 'state-1.html',
                controller : function ($scope, $state, $stateParams) {
                  $scope.go = function () {
                    $state.go('state2', { someParam : 'broken magic' });
                  };

                  console.log('state1 params:', $stateParams);
                }
            })
            .state('state2', {
                url: 'state2',
                templateUrl: 'state-2.html',
                controller : function ($scope, $state, $stateParams) {
                  $scope.go = function () {
                    $state.go('state1', { someOtherParam : 'lazy lizard' });
                  };

                  console.log('state2 params:', $stateParams);
                }
            });
    });

现场示例可以在
这里
找到

谢谢。


问题答案:

您不能在状态之间传递任意参数,您需要将它们定义为定义的一部分$stateProvider。例如

$stateProvider
    .state('contacts.detail', {
        url: "/contacts/:contactId",
        templateUrl: 'contacts.detail.html',
        controller: function ($stateParams) {
            console.log($stateParams);
        }
    }) ...

上面的代码将输出定义了contactId属性的对象。如果你去/contacts/42,你$stateParams会的{contactId: 42}

有关更多信息,请参见UI-Router URL路由的文档。



 类似资料:
  • 问题内容: 建立一个多步骤表单(“向导”)。最初是按照本教程进行的,该教程效果很好,但是现在尝试对其进行调整,因此第一步已嵌入首页中,而不是单独的状态。无论我做什么,我都无法创建一条可行的路径。我总是得到: 无法从状态“ home”解析“ .where” 要么 无法从状态“家”解析“ wizard.where” 要么 无法从状态“ home”解析“ wizard.where @” …即使在中效果很

  • 问题内容: 角度ui路由器的示例演示在起始页面具有以下链接: “ ui-router”的完整网址为或 “关于”的完整网址为或 当我使用durandalJS时,存在一个限制,即默认URL只是“ /”,不能有“ / ui-router”。 Angular ui路由器插件有相同的限制吗? 问题答案: 请参阅此处,默认路由有一个“其他”选项。

  • 问题内容: 我在Angular应用中用于路由。在典型的登录场景中,如果用户未登录,我会将用户重定向到登录URL。如果没有ui.router库,则可以将$ routeChangeStart事件与结合使用,效果很好。现在,我正在使用结合了的事件,但没有任何效果!它还会将我的浏览器发送到一个无限循环中。我从其他来源了解到,这是一个已知的错误,建议的解决方案都不适合我。而且,也不会重定向到登录页面。 这是

  • 问题内容: 我想使用在视图中定义的一个控制器,但是没有定义任何东西。有没有办法做到这一点?请分享一个简单的例子以了解。 我有这个index.html 这是我的模型定义 app.js 控制台为空,并且html模板中的作用域为空。如果您有解决方案,请使用非常简单的示例。 我在这里阅读,我认为它起作用Rakrap Jaknap于2015-04-17 08:01回答 问题答案: 这里的重点是: 控制器始终

  • 由于以下错误(npm 3.10.10,webpack 3.8.1),我无法使用vue routes get。如何解决这个问题 编译失败。 ./node_modules/babel loader/lib/node_modules/vue loader/lib/selector.js?type=script 我使用简单的网页包 Quotes.vue Quote.vue new-quote.vue Ap

  • 问题内容: 我刚刚升级到从和我已经注意到,状态改变时,滚动位置跳到德子的顶部是新状态的主题。 很好,但是我有两个问题: 1)我在页面顶部和之间填充了30px的空白,我希望它滚动到页面顶部,并留出一定的空隙。目前,它正好到达看起来难看的顶部。为此,我想我要么需要知道如何使其滚动到ui视图所在的div的顶部(而不是浏览器),要么我需要找出如何重写才能滚动到负30px 。 我已经尝试过,但是如果这样做,