AngularJS $route Params 未定义,但 属性 存在
AngularJS $routeParams is undefiend, but property is there
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 时。com/singleNews/2 - 它打开 ID 为 - 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);
所以当我输入 url
example.com/singleNews/2
routeParams 是空对象,虽然当我在 chrome 控制台中单击那个空对象时 属性 在那里并且它说 "value below was evaluated just now "
但是当我将该控制台添加到 TimeOut 时,它可以工作并且 属性 就在那里。我知道在 angularjs 中不推荐使用 setTimeOut(),因此使用 $timeout 解决了问题,但我想了解问题所在。
您应该在控制台中收到错误消息:
Function.prototype.bind.apply(...) is not a constructor
简单地避免使用 (...)=>{...}
语法,因为 AngularJS 试图用 new method()
语法调用一个函数,但使用箭头符号失败了。
将 .config($routeProvider=>{...}
切换为 .config(function($routeProvider){...}
(以及其他类似情况)。
箭头符号仍然可以使用,并且对 $http
调用很有用,例如:
$http.get(url).then( (res)=>{...} );
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 时。com/singleNews/2 - 它打开 ID 为 - 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);
所以当我输入 url
example.com/singleNews/2
routeParams 是空对象,虽然当我在 chrome 控制台中单击那个空对象时 属性 在那里并且它说 "value below was evaluated just now " 但是当我将该控制台添加到 TimeOut 时,它可以工作并且 属性 就在那里。我知道在 angularjs 中不推荐使用 setTimeOut(),因此使用 $timeout 解决了问题,但我想了解问题所在。
您应该在控制台中收到错误消息:
Function.prototype.bind.apply(...) is not a constructor
简单地避免使用 (...)=>{...}
语法,因为 AngularJS 试图用 new method()
语法调用一个函数,但使用箭头符号失败了。
将 .config($routeProvider=>{...}
切换为 .config(function($routeProvider){...}
(以及其他类似情况)。
箭头符号仍然可以使用,并且对 $http
调用很有用,例如:
$http.get(url).then( (res)=>{...} );