Javascript AngularJS$routeParams未定义,但存在属性

Javascript AngularJS$routeParams未定义,但存在属性,javascript,angularjs,routing,angularjs-ng-route,Javascript,Angularjs,Routing,Angularjs Ng Route,这是我的模块和配置。我有一个简单的应用程序。我想添加一个功能,当用户输入example.com/singleNews/2的url时,它会打开ID为-2的新闻 angular.module("newsApp",["ngRoute"]) .config($routeProvider=>{ $routeProvider.when("/edit",{ templateUrl : "views/addNewsView.html" }); $routeProvi

这是我的模块和配置。我有一个简单的应用程序。我想添加一个功能,当用户输入example.com/singleNews/2的url时,它会打开ID为-2的新闻

angular.module("newsApp",["ngRoute"])
.config($routeProvider=>{
    $routeProvider.when("/edit",{
        templateUrl : "views/addNewsView.html"
    });
    $routeProvider.when("/newsList",{
        templateUrl : "views/newsList.html"
    });
    $routeProvider.when("/singleNews/:newsId",{
        templateUrl : "views/singleNews.html"
    });
    $routeProvider.when("/",{
        templateUrl : "views/newsList.html"
    });
    $routeProvider.otherwise({
        redirectTo:"/newsList"
    });
})
所以当我输入url时

example.com/singleNews/2

routeParams是空对象,但当我在chrome控制台中单击该空对象时,属性就在那里,它说“下面的值刚刚计算过”
但当我将该控制台添加到TimeOut中时,它就可以工作了,并且属性就在那里。我知道在angularjs中不建议使用setTimeOut(),因此使用$timeout解决了问题,但我想了解问题所在

您的控制台中应该会出现错误:

Function.prototype.bind.apply(…)不是构造函数

简单地避免使用
(…)=>{…}
语法,因为AngularJS试图使用
new method()
语法调用函数,但使用箭头表示法失败

.config($routeProvider=>{…}
切换到
.config(函数($routeProvider){…}
(以及其他类似情况)

箭头符号仍然可以使用,并且对
$http
调用很有用,例如:


您的控制台中应该会出现错误:

Function.prototype.bind.apply(…)不是构造函数

简单地避免使用
(…)=>{…}
语法,因为AngularJS试图使用
new method()
语法调用函数,但使用箭头表示法失败

.config($routeProvider=>{…}
切换到
.config(函数($routeProvider){…}
(以及其他类似情况)

箭头符号仍然可以使用,并且对
$http
调用很有用,例如:


1)添加<代码>控制器:“NealAppTrl”<代码>到您的配置2)使用<代码>(…)={…} /代码>语法应该引起错误(<代码>……不是构造器< /代码>),考虑<代码>函数({…} ),这是有效的。但是您能解释为什么箭头函数给出错误吗?1)添加<代码>控制器:“NealAppCtRL”。到您的配置2)使用<代码>(…)= {…}/<代码>语法应该引起错误(<代码>…不是构造器< /代码>),考虑<代码>函数(…){}} /代码>。然而,您能解释为什么箭头函数会给出错误吗?
.controller("newsAppCtrl",['$scope','$location','$routeParams',($scope, $location, $routeParams)=>{

    console.log($routeParams); //empty object

    setTimeout(function () {
        console.log($routeParams); //in this case property is there
    },100);
$http.get(url).then( (res)=>{...} );