Dapatkah saya menetapkan rute dengan params opsional (templat dan pengontrol yang sama, tetapi beberapa params harus diabaikan jika tidak ada?
Jadi, alih-alih menulis dua aturan berikut, hanya punya satu?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
Sesuatu seperti ini ([param ini opsional])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
Saya tidak dapat menemukan apa pun di dokumentasi mereka.
angularjs
angularjs-routing
Alexandru R
sumber
sumber
[]
) dalam versi 1.1.5.[]
. Lihat komit ini: github.com/angular/angular.js/commit/…Jawaban:
Sepertinya Angular memiliki dukungan untuk ini sekarang.
Dari dokumen terbaru (v1.2.0) untuk
$routeProvider.when(path, route)
:path
dapat berisi grup bernama opsional dengan tanda tanya (:name?
)sumber
.when('/claims/documents/:CLAIMS_ID/:DOCUMENT_NAME?'...
itu tidak akan cocok jika url tidak memiliki garis miring. Jadi/claims/documents/1234/
cocok, tetapi/claims/documents/1234
tidak.Seperti @ g-eorge mention, Anda dapat membuatnya seperti ini:
Anda juga dapat membuat sebanyak yang Anda butuhkan parameter opsional.
sumber
Silakan lihat @jlareau jawab di sini: /programming/11534710/angularjs-how-to-use-routeparams-in-generating-the-templateurl
Anda dapat menggunakan fungsi untuk menghasilkan string template:
sumber
Sebenarnya saya pikir OZ_ mungkin agak benar.
Jika Anda memiliki rute
'/users/:userId'
dan menavigasi ke'/users/'
(perhatikan trailing /),$routeParams
di controller Anda harus menjadi objek yang berisiuserId: ""
1.1.5. Jadi tidak ada paramateruserId
yang tidak sepenuhnya diabaikan, tapi saya pikir itu yang terbaik yang akan Anda dapatkan.sumber