Jika Anda ingin meneruskan status non-URL, maka Anda tidak boleh menggunakan url
saat menyiapkan state
. Saya menemukan jawabannya di sebuah PR dan melakukan beberapa kera untuk lebih memahami.
$stateProvider.state('toState', {
templateUrl:'wokka.html',
controller:'stateController',
params: {
'referer': 'some default',
'param2': 'some default',
'etc': 'some default'
}
});
Kemudian Anda dapat menavigasi ke sana seperti ini:
$state.go('toState', { 'referer':'jimbob', 'param2':37, 'etc':'bluebell' });
Atau:
var result = { referer:'jimbob', param2:37, etc:'bluebell' };
$state.go('toState', result);
Dan dalam HTML demikian:
<a ui-sref="toState(thingy)" class="list-group-item" ng-repeat="thingy in thingies">{{ thingy.referer }}</a>
Kasus penggunaan ini benar-benar terungkap dalam dokumentasi, tetapi menurut saya ini adalah cara yang ampuh untuk melakukan transisi status tanpa menggunakan URL.
params
larik.{referer: true, param2: true, etc: true}
Solusi Nathan Matthews tidak berhasil untuk saya, tetapi sepenuhnya benar tetapi ada sedikit gunanya mencapai solusi:
Poin utamanya adalah: Jenis parameter yang ditentukan dan toParamas dari $ state.go harus berupa larik atau objek yang sama di kedua sisi transisi status.
Misalnya ketika Anda mendefinisikan params dalam keadaan sebagai berikut, Anda berarti params adalah larik karena menggunakan "[]":
Jadi Anda juga harus meneruskan toParams sebagai array seperti ini:
Dan Anda dapat mengaksesnya melalui $ stateParams sebagai array seperti ini:
Solusi yang lebih baik adalah menggunakan objek daripada array di kedua sisi :
Saya mengganti [] dengan {} dalam definisi params. Untuk meneruskan toParams ke $ state.go juga Anda harus menggunakan objek daripada array:
maka Anda dapat mengaksesnya melalui $ stateParams dengan mudah:
sumber
params: {'index', 'anotherKey'},
dengan yangparams: {'index' : 'dummy', 'anotherKey' : 'dummy'},
lain itu bukan objek javascript yang validYang harus saya lakukan adalah menambahkan parameter ke definisi status url seperti itu
Doh!
sumber
/toState/:referer
sintaks adalah dengan menggunakan$location.path()
bukan$state.go()
.Tidak yakin apakah ini akan bekerja dengan AngularJS v1.2.0-rc.2 dengan ui-router v0.2.0. Saya telah menguji solusi ini di AngularJS v1.3.14 dengan ui-router v0.2.13.
Saya baru menyadari bahwa tidak perlu meneruskan parameter di URL seperti yang direkomendasikan gwhn.
Cukup tambahkan parameter Anda dengan nilai default pada definisi negara Anda. Negara bagian Anda masih dapat memiliki nilai Url.
dan tambahkan parameter ke
$state.go()
sumber
Tak satu pun dari contoh di halaman ini yang berhasil untuk saya. Ini yang saya gunakan dan berhasil dengan baik. Beberapa solusi mengatakan Anda tidak dapat menggabungkan url dengan $ state.go () tetapi ini tidak benar. Hal yang canggung adalah Anda harus menentukan params untuk url dan juga daftar params. Keduanya harus hadir. Diuji pada Angular 1.4.8 dan UI Router 0.2.15.
Di negara bagian, tambahkan parameter Anda ke akhir status dan tentukan params:
Di pengontrol Anda, pernyataan go Anda akan terlihat seperti ini:
Kemudian untuk mengeluarkan params dan menggunakannya di pengontrol status baru Anda (jangan lupa untuk meneruskan $ stateParams ke fungsi pengontrol Anda):
sumber
Dalam kasus saya, saya mencoba dengan semua opsi yang diberikan di sini, tetapi tidak ada yang bekerja dengan baik (angular 1.3.13, ionic 1.0.0, angular-ui-router 0.2.13). Solusinya adalah:
dan di state.go:
Bersulang
sumber
Saya telah menghabiskan banyak waktu untuk bertarung dengan Ionic / Angular's $ state & $ stateParams;
Untuk memanfaatkan $ state.go () dan $ stateParams Anda harus memiliki pengaturan tertentu dan parameter lain tidak boleh ada.
Di app.config () saya, saya telah menyertakan $ stateProvider dan mendefinisikan di dalamnya beberapa status:
The
params
key sangat penting. Selain itu, perhatikan TIDAK ADAurl
kunci yang ada ... menggunakan stateParams dan URL TIDAK bercampur. Mereka saling eksklusif satu sama lain.Dalam panggilan $ state.go (), definisikan seperti ini:
The
index
dananotherKey
variabel $ stateParams akan HANYA diisi jika mereka pertama tercantum dalam $ stateControllerparams
mendefinisikan kunci.Di dalam pengontrol, sertakan $ stateParams seperti yang diilustrasikan:
Variabel yang dilewati harus tersedia!
sumber
Coba Dengan
reload: true
?Tidak tahu apa yang terjadi paling lama - ternyata saya membodohi diri sendiri. Jika Anda yakin bahwa segala sesuatunya ditulis dengan benar dan Anda akan menggunakan status yang sama, coba
reload: true
:Semoga ini menghemat waktu Anda!
sumber
Saya pernah menghadapi masalah serupa. Saya berakhir dengan solusi yang berfungsi setelah banyak googling dan uji coba. Inilah solusi saya yang akan berhasil untuk Anda.
Saya memiliki dua pengontrol - searchBoxController dan stateResultController dan parameter bernama searchQuery untuk diteruskan dari tampilan yang memiliki kotak pencarian ke tampilan yang menunjukkan hasil yang diambil dari server jarak jauh. Beginilah cara Anda melakukannya:
Di bawah ini adalah pengontrol yang Anda gunakan untuk memanggil tampilan berikutnya
$state.go()
Di bawah ini adalah status yang akan dipanggil saat
$state.go()
dieksekusi:Dan terakhir, pengontrol yang terkait dengan
app.searchResults
status:sumber
Dan dalam kasus saya tentang status orang tua / anak. semua parameter yang dideklarasikan dalam status anak harus diketahui oleh status induk
sumber
Solusi yang kami miliki untuk memiliki status yang membutuhkan 2 parameter berubah:
untuk
sumber
Anda mendefinisikan berikut di router.js
Pengontrol Anda perlu menambahkan $ stateParams.
Anda dapat mengirim objek dengan parameter sebagai berikut.
sumber
Saya mencoba Menavigasi dari Halaman 1 ke 2, dan saya harus meneruskan beberapa data juga.
Di router.js saya , saya menambahkan nama dan usia params :
Di Page1 , onClick dari tombol berikutnya:
Di Halaman2 , saya dapat mengakses parameter tersebut:
sumber
Jika ini adalah parameter kueri yang ingin Anda teruskan seperti ini:
/toState?referer=current_user
maka Anda perlu mendeskripsikan keadaan Anda seperti ini:
sumber: https://github.com/angular-ui/ui-router/wiki/URL-Routing#query-parameters
sumber