如何通过AngularJS中的templateUrl传递URL参数?

use*_*728 6 javascript angularjs

试图学习AngulareJS一直坚持这一点.

这是代码:

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

这显然是错误的.

请问任何人请告诉我这样做的正确方法是什么?谢谢.

use*_*728 13

谢谢你们,这就是我想要的

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

templateUrl: function(params) {
    return '/sort/' + params.expressionId +'/'+ params.typeId ;
},
controller: 'tasksController'
});
Run Code Online (Sandbox Code Playgroud)

  • 我知道在这里发表评论有点晚了,但是,你能解释一下你在哪里传递 'params',params 从哪里得到它的值吗?!谢谢。 (2认同)

ash*_*shu 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;
}]);
Run Code Online (Sandbox Code Playgroud)