2013-07-16 371 views
3

我有一個需要訪問url參數的控制器。但是,我無法弄清楚如何訪問參數。以下是我迄今爲止:如何訪問控制器內部的url參數?

控制器:

function CustomerCtrl($scope, $http, $routeParams, $route) { 

// var customer_id = $routeParams.id; // this doesn't work 
// var customer_id = $route.current.params.id; // this doesn't work 
var customer_id = '58'; // this clearly works 

$http({ 
    url: 'customers/'+customer_id+'/info', 
    method: "POST" 
}) 
.success(function (data, status, headers, config) { $scope.name = data; }) 
.error(function (data, status, headers, config) { $scope.status = status; }); 
} 

應用:

var customer = { 
    name: 'customer', 
    url: '/customer', 
    abstract: true, 
    templateUrl: 'views/customer/customer.html', 
    controller: 'CustomerCtrl' 
}; 

var customer_info = { 
    name: 'customer.info', 
    parent: customer, 
    url: '/:id/info' 
    views: { 
     view1: { templateUrl: "views/customer/view1.html" }, 
     view2: { templateUrl: "views/customer/view2.html" } 
    } 
}; 

$stateProvider 
    .state(customer) 
    .state(customer_info); 

我缺少什麼?

+0

$ routeParams.id應該工作。根據你的實現,你可以傳遞這樣的參數/ customer?id = 58,然後CustomerCtrl可以看到參數。 – zsong

+0

我傳遞的參數是這樣的:''''。所以它最終是''setRoute('/ customer/58/info')''。它試圖按照你的建議書寫,但它仍然不起作用。 –

+0

customer_id不是查詢參數,它是url的一部分,請嘗試

那麼簡單,但我覺得不從一開始就想着這個白癡。

1

它實際上比你想象的還要容易。您使用的是使用狀態而不是默認路由器的ui路由器(https://github.com/angular-ui/ui-router)。

function CustomerCtrl($scope, $http, $routeParams, $route) { 

應該是:

function CustomerCtrl($scope, $http, $stateParams, $state) { 

則:

var customer_id = $stateParams.id; 
+1

這是行不通的。 –

+0

這確實有效,好吧。嘗試類似於:'myApp.controller('myController',['$ scope','$ stateParams','$ state',function($ scope,$ stateParams,$ state){'。 stateParams.customer_id'等於來自狀態路由器的':customer_id'。 –

相關問題