a.html
<p ui-view='index'></p>
b.html
<p ui-view='content'></p>
c.html
<p>content1</p>
d.html
<p>content2</p>
Acara mengikat dalam a.html mencetuskan paparan kandungan untuk bertukar kepada c.html atau d.html
Cara mengkonfigurasi konfigurasi $stateProvider
Bagaimana untuk menukar js secara manual?
Soalan anda tidak mempunyai maklumat kontekstual yang diperlukan, jadi saya hanya boleh bergantung pada spekulasi atau tekaan untuk menyelesaikannya
Sistem penghalaan mana-mana rangka kerja SPA adalah sama: setiap laluan sepadan dengan status aplikasi, dan perubahan dalam status aplikasi ditunjukkan dalam perubahan dalam URL sebaliknya, perubahan dalam URL akan menyebabkan perubahan dinamik dalam sistem penghalaan Muat semula keadaan aplikasi.
Dalam contoh anda, hanya terdapat kemasukan berterusan ke laluan
ui-view='content'
, tetapi pandangan yang berbeza (c.html
dand.html
) perlu memasukkannya secara dinamik, yang bermaksudc.html
dand.html
Untuk sepadan dengan keadaan aplikasi yang berbeza, sistem penghalaan boleh dikemas kini secara dinamik dengan sewajarnya.Andaikan contoh anda kelihatan seperti ini:
Apabila
/posts/show/c
,ui-view='content'
memaparkanc.html
Apabila
/posts/show/d
,ui-view='content'
memaparkand.html
Jadi kita boleh memetakannya ke ui-router:
state
ialahposts.show
serpihan dinamik, iaitu bahagian pembolehubah URL, sepadan dengan
state
dalamurl
, saya menamakannya:name
view
ialahcontent@posts.show
Ini sudah cukup untuk menulis kebanyakan kod:
Satu-satunya soalan yang tinggal ialah: bagaimana untuk mengemas kini
:name
apabilatemplateUrl
berubah?Seperti yang dinyatakan sebelum ini, perubahan dalam URL akan menyebabkan sistem penghalaan mengemas kini keadaan aplikasi Perubahan ini disimpan dalam objek
$params
dalam sistem penghalaan Kita boleh menggunakan objek ini untuk mengekstrak bahagian yang diubah dan menjana yang betultemplateUrl
🎜>. Di sini saya menulis fungsi pembantu untuk melakukan ini:modul ui-router,
templateUrl
bukan sahaja menerima rentetan, tetapi juga nilai pulangan fungsi. Jadi anda boleh dapatkan:Apabila
/posts/show/c
,templateUrl
ialahtemplates/posts/c.html
Apabila
/posts/show/d
,templateUrl
ialahtemplates/posts/d.html
Sejajar dengan itu, pautan navigasi dalam
index
anda bertanggungjawab untuk menukar perubahan/posts/show/:name
Cara menjana pautan yang sepadan dengan serpihan dinamik terdapat dalam dokumentasi ui-router.Saya rasa orang di atas membuat permainan ini terlalu rumit, bukankah lebih baik untuk menonton tutorial ui-view sahaja?