为什么$routeParams没有定义?
Why is $routeParams undefined?
我正在尝试使用服务来处理http请求:
angular
.module('app')
.factory('stats', function($http){
return {
getStats: function(path) {
return $http
.get(path)
.then(function(result) {
//resolve the promise as the data
return result.data;
});
}
};
});
当在控制器中调用getStats方法时,$routeParams属性是未定义的,因此请求永远不会运行:
app.controller('ChartController', ['$route', 'stats', '$scope', '$rootScope', '$routeParams', function($route, stats, $scope, $rootScope, $routeParams) {
console.log($routeParams);
var path = "/players/players/" + $routeParams.playerId;
var players = stats.getStats(path);
当我直接在控制器中运行http请求而不使用服务时,这不是我遇到的问题。
正如你所说,没有服务就没有问题,这意味着问题不在于routeParams,而在于你处理服务的方式。问题在于AJAX调用的异步行为。在收到响应之前返回响应。有很多方法可以解决这个问题。我将解释一种可能的方法。
更新你的工厂到
angular.module('app')
.factory('stats', function($http){
return{
getStats: function(path) {
return $http.get(path);
}
};
});
更新控制器为
var players;
stats.getStats(path).then(function(response){
players = response.data;
});
使用$q
服务或使用回调函数是其他可能的选择
相关文章:
- 用嵌套函数和默认函数定义函数
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 控制台返回var不是't定义,但它是
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- jQuery自定义验证比较多个输入的序列
- 查看JS对象的所有键,甚至是getter定义的键
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- $window.ga在AngularJS事件中未定义
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- $routeParams在传递到新视图时未定义&控制器
- 为什么$routeParams不起作用?定义
- $routeParams在angularjs中未定义
- Angular的routeParams没有定义
- 为什么$routeParams没有定义?
- AngularJS $routeParams是未定义的