オプションのパラメータ(同じテンプレートとコントローラを使用してルートを設定できますが、パラメータが存在しない場合は無視する必要があります)。
それで、次の2つの規則を書く代わりに、1つだけ持っていますか?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
このようなもの([このパラメータはオプションです])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
私は彼らのドキュメンテーションには何も見つかりませんでした。
Angularがこれをサポートしているようです。
$routeProvider.when(path, route)
に関する最新の(v1.2.0)ドキュメントから:
path
には、疑問符付きのオプションの名前付きグループを含めることができます(:name?
)
@ g-eorgeの言及のように、次のようにすることができます。
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/:userId?', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
また、必要なだけオプションパラメータを作成することもできます。
ここで@ jlareau答えを見てください: https://stackoverflow.com/questions/11534710/angularjs-how-to-use-routeparams-in-generating-the-templateurl
関数を使ってテンプレート文字列を生成することができます。
var app = angular.module('app',[]);
app.config(
function($routeProvider) {
$routeProvider.
when('/', {templateUrl:'/home'}).
when('/users/:user_id',
{
controller:UserView,
templateUrl: function(params){ return '/users/view/' + params.user_id; }
}
).
otherwise({redirectTo:'/'});
}
);
実際、私はOZ_が多少正しいかもしれないと思います。
'/users/:userId'
というルートがあり、'/users/'
に移動する場合(末尾の/に注意)、コントローラの$routeParams
は1.1.5のuserId: ""
を含むオブジェクトになります。したがって、userId
というパラメータが完全に無視されているわけではありませんが、これが最良の方法だと思います。