【问题标题】:Angular.js - getting access to the params via $route or $routeParamsAngular.js - 通过 $route 或 $routeParams 访问参数
【发布时间】:2013-08-21 21:47:03
【问题描述】:

我有一个控制器,我在其中注入 $route 和 $routeParams 但是当我去获取值时通过

$route.routes.current.params.test ->> 当前未定义 $routeParams.test ->> 测试未定义

当我使用 console.log($route) 或 console.log($routeParams) 时,两个对象似乎都被正确填充

我很困惑。 console.log 的值怎么会在我执行 console.log 的同一控制器中失败?

更新:示例代码

    angular.module('TestApp')
        .controller('TestController', ['$scope', '$http', '$routeParams', '$route',
            function($scope, $http, $routeParams, $route) {
                console.log($routeParams);
                //console.log($routeParams.test);
                console.log($route.current.test);
                //console.log($route.routes);

            }]);

【问题讨论】:

  • 你能发布一些你的代码吗?
  • current$route 的属性。不是$route.routes
  • $route.current 返回 undefined
  • 你应该展示你的路由配置,它是 $routeParams 上可用属性的关键。

标签: angularjs angular-routing


【解决方案1】:

http://deansofer.com/posts/view/14/AngularJs-Tips-and-Tricks-UPDATED#routinghttps://groups.google.com/d/msg/angular/ib2wHQozeNE/sC3SX3QTyRgJ

在您的代码中,$route 和 $routeParams 可能是异步解析的。当你在控制台中展开对象时,它们已经被解析了,但是当控制器构造函数运行时它们并没有被解析。

在您的控制器中使用$scope.$on('$routeChangeSuccess', function(...) { ... }),并尝试检查那里的路由属性。

$routeChangeSuccess

【讨论】:

  • 非常感谢。我是一个真正的角度初学者,这很有帮助。
  • 谢谢你,这让我疯狂了一天。
【解决方案2】:

对 Chrome 控制台稍作调整

我只想补充一点,控制台的这种奇怪行为值得关注:它会在您展开对象时更新它。假设我们有:

obj = {}
obj.a = {x: 1} //give it something worth displaying the expand triangle for
console.log(obj)
obj.b = 1
console.log(obj)

在控制台中我们会得到:

▶ Object {a: Object}
▶ Object {a: Object, b: 1}

正确显示obj 的两个副本之间的差异。但是,当您扩展这两者时,它们并没有什么不同:

▼ Object {a: Object}
  ▶ a: Object
    b: 1
  ▶ __proto__: Object

▼ Object {a: Object, b: 1}
  ▶ a: Object
    b: 1
  ▶ __proto__: Object

$route

但至少我们可以从控制台得知,如果单行控制台与其扩展不同,例如当$route 只有两个键/值对时:

▶ Object {routes: Object, reload: function}

扩展为三个:

▶ Object {routes: Object, reload: function}
  ▶ current: angular.extend.angular.extend
  ▶ reload: function () {}
  ▶ routes: Object
  ▶ __proto__: Object

【讨论】:

    猜你喜欢
    • 2016-04-18
    • 2017-04-06
    • 1970-01-01
    • 2017-08-07
    • 2012-10-07
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多