我有以下网址:
http://myurl.dev/users/32
我想将最后一个参数32
传递给$http.get request
,但我无法弄清楚如何传递它。
到目前为止,我有这个:
var matchmaker = angular.module('matchmaker', ['ngRoute'], function($interpolateProvider) {
$interpolateProvider.startSymbol('[[');
$interpolateProvider.endSymbol(']]');
})
.controller('LocationCtrl', ['$scope', '$http', '$location', '$routeParams', '$route', function($scope, $http, $location, $routeParams, $route) {
var id = $route.current.params.id;
console.log(id);
$http.get('http://myurl.dev/services/' + id ).success(function(data)
{
$scope.applicants = data;
});
}]);
在控制台中它说:
无法读取未定义的属性'params'
有人可以告诉我,我做错了吗?
修改
Angular没有生成url,它是服务器端生成的url
编辑2.0
这是具有实际路由参数的routeProvider的配置:
var matchmaker = angular.module('matchmaker', ['ngRoute'], function($interpolateProvider) {
$interpolateProvider.startSymbol('[[');
$interpolateProvider.endSymbol(']]');
})
.config(function($routeProvider, $locationProvider) {
$routeProvider.when('/matchmaker/locations/:id', {
controller: 'LocationCtrl'
});
$locationProvider.html5Mode(true);
});
答案 0 :(得分:0)
将console.log($routeParams);
放入控制器并检查其值。
如果是Object {}
,请使用参数检查您是否有路线定义:
var module = angular.module('ngRouteExample', ['ngRoute']);
module.config(function($routeProvider, $locationProvider) {
$routeProvider.when('/test/:id', {
templateUrl: 'test.html',
controller: 'TestController'
});
// configure html5 to get links working on jsfiddle
$locationProvider.html5Mode(true);
});
如果是这样,您将在控制台中获得此输出:
Object {id: "42"}
答案 1 :(得分:0)
这是因为你试图获得当时不存在的价值,这就是javascript的工作方式。您需要在准备好使用' $routeChangeSuccess'时指定您想要这些值。事件。
.controller('PagesCtrl', function ($rootScope, $scope, $routeParams, $route) {
//If you want to use URL attributes before the website is loaded
$rootScope.$on('$routeChangeSuccess', function () {
//You can use your url params here
$http.get('http://myurl.dev/services/' + $routeParams.id )
.success(function(data) {
$scope.applicants = data;
});
});
});