2014-05-17 81 views
5

試圖學習AngulareJS陷入了困境。
如何在AngularJS中通過templateUrl傳遞URL參數?

這是代碼:

app.config(function ($routeProvider){ 
$routeProvider 
.when('/', 
{  
    templateUrl: '/sort', 
    controller : 'tasksController'  
}) 
.when('/expression/:expressionId/type/:typeId', 
{ 
    templateUrl: '/sort/'+:expressionId +'/'+ :typeId, 
    controller : 'tasksController' 
})}); 

這顯然是錯誤的。

任何人都可以告訴我什麼是正確的方法嗎?謝謝。

+0

也許你應該告訴我們爲什麼它是錯的。你得到的行爲是什麼? – JeffryHouser

+0

Angular的「本地」路由器不可能嘗試接近它。但是,它可以使用[Angular UI Router](https://github.com/angular-ui/ui-router#angularui-router-)。如果你想堅持使用ngRouter,你可以在主視圖中使用$ routeParams(在控制器中填充)和ngInclude的組合。 – jacob

+0

我想通了。謝謝你的迴應。 – user727728

回答

1

可能您正在尋找$ routeparams https://docs.angularjs.org/api/ngRoute/service/ $ routeParams。

你可以做一些象下面這樣:

app.config(function ($routeProvider){ 
    $routeProvider 
    .when('/',{ 
     templateUrl: '/sort', 
     controller : 'tasksController' 
    }) 
    .when('/expression/:expressionId/type/:typeId', { 
     templateUrl: '/sort', 
     controller : 'tasksController' 
    }) 
}); 

app.controller('tasksController', ['$scope', '$routeparams', function($scope, $routeparams) { 
    var expressionId = $routeparams.expressionId 
     , typeId = $routeparams.typeId; 
}]); 
+0

我想通了。謝謝你的迴應。 – user727728

10

謝謝你們,這是我想要的東西

.when('/expression/:expressionId/type/:typeId', { 

templateUrl: function(params) { 
    return '/sort/' + params.expressionId +'/'+ params.typeId ; 
}, 
controller: 'tasksController' 
}); 
+1

我知道在這裏評論有點晚,但是,你能解釋一下你在哪裏傳遞'params',params從哪裏獲得它的價值?!謝謝。 – JimmyBoy