Saya harus lulus dan menerima dua parameter ke keadaan saya ingin transit menggunakan ui-sref
ui-router.
Sesuatu seperti menggunakan tautan di bawah untuk mentransisikan status ke home
dengan foo
dan bar
parameter:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
Penerimaan foo
dan bar
nilai - nilai dalam pengontrol:
app.controller('SomeController', function($scope, $stateParam) {
//..
var foo = $stateParam.foo; //getting fooVal
var bar = $stateParam.bar; //getting barVal
//..
});
Saya mendapatkan undefined
untuk $stateParam
di controller.
Bisakah seseorang membantu saya memahami bagaimana menyelesaikannya?
Edit:
.state('home', {
url: '/',
views: {
'': {
templateUrl: 'home.html',
controller: 'MainRootCtrl'
},
'A@home': {
templateUrl: 'a.html',
controller: 'MainCtrl'
},
'B@home': {
templateUrl: 'b.html',
controller: 'SomeController'
}
}
});
javascript
html
angularjs
angular-ui-router
angular-ui
melewatkan
sumber
sumber
url:'.../home/:foo/:bar
'/:foo/:bar': {
di rute kosong Anda atau Anda dapat mengatur sebagai querystring juga.Jawaban:
Saya telah membuat contoh untuk menunjukkan caranya.
state
Definisi yang diperbarui adalah:Dan ini akan menjadi pengontrol:
Apa yang dapat kita lihat adalah bahwa home state sekarang memiliki url yang didefinisikan sebagai:
yang berarti, bahwa params di url diharapkan sebagai
Kedua tautan ini akan meneruskan argumen ke controller dengan benar:
Juga, pengontrol mengkonsumsi
$stateParams
bukan$stateParam
.Tautan ke doc:
Anda bisa memeriksanya di sini
params : {}
Ada juga pengaturan yang lebih baru dan lebih terperinci
params : {}
. Seperti yang telah kita lihat, kita dapat mendeklarasikan parameter sebagai bagian dariurl
. Tetapi denganparams : {}
konfigurasi - kita dapat memperluas definisi ini atau bahkan memperkenalkan parameter yang bukan bagian dari url:Pengaturan yang tersedia untuk params dijelaskan dalam dokumentasi $ stateProvider
Di bawah ini hanyalah ekstrak
Kita dapat memanggil params ini dengan cara ini:
Lihat beraksi di sini
sumber
url: "/:id?foo&bar"
Anda tidak perlu memiliki parameter di dalam URL.
Misalnya, dengan:
Anda dapat mengirim parameter ke status, menggunakan:
Tentu saja, jika Anda memuat ulang halaman sekali pada
home
keadaan, Anda akan kehilangan parameter negara, karena mereka tidak disimpan di mana pun.Deskripsi lengkap tentang perilaku ini didokumentasikan di sini , di bawah
params
baris distate(name, stateConfig)
bagian ini.sumber
Anda hanya salah mengeja
$stateParam
, seharusnya$stateParams
(dengan huruf s). Itu sebabnya Anda tidak terdefinisi;)sumber