Apa cara AngularJS untuk mengakses cookie? Saya telah melihat referensi untuk layanan dan modul untuk cookie, tetapi tidak ada contoh.
Apakah ada, atau tidak ada pendekatan kanonik AngularJS?
angularjs
angular-cookies
Ellis Whitehead
sumber
sumber
Jawaban:
Jawaban ini telah diperbarui untuk mencerminkan versi angularjs stabil terbaru. Satu catatan penting adalah bahwa
$cookieStore
pembungkus tipis di sekitarnya$cookies
. Mereka hampir sama karena mereka hanya bekerja dengan cookie sesi. Meskipun, ini menjawab pertanyaan awal, ada solusi lain yang mungkin ingin Anda pertimbangkan seperti menggunakan penyimpanan lokal, atau plugin jquery.cookie (yang akan memberi Anda lebih banyak kontrol yang baik dan melakukan cookie di sisi server. Tentu saja melakukannya di angularjs berarti Anda mungkin ingin membungkusnya dalam layanan dan digunakan$scope.apply
untuk memberi tahu sudut perubahan pada model (dalam beberapa kasus).Satu catatan lain dan itu adalah bahwa ada sedikit perbedaan antara keduanya ketika menarik data tergantung pada apakah Anda dulu
$cookie
menyimpan nilai atau$cookieStore
. Tentu saja, Anda benar-benar ingin menggunakan yang satu atau yang lain.Selain menambahkan referensi ke file js Anda perlu menyuntikkan
ngCookies
ke definisi aplikasi Anda seperti:Anda kemudian harus baik untuk pergi.
Berikut adalah contoh minimal fungsional, di mana saya menunjukkan itu
cookieStore
adalah pembungkus tipis di sekitar cookie:Langkah-langkahnya adalah:
angular.js
angular-cookies.js
ngCookies
ke modul aplikasi Anda (dan pastikan Anda referensi modul itu ding-app
atribut)$cookies
atau$cookieStore
parameter ke controllercookieStore
menggunakan metode put / getsumber
Ini adalah bagaimana Anda dapat mengatur dan mendapatkan nilai cookie. Inilah yang awalnya saya cari ketika saya menemukan pertanyaan ini.
Catatan yang kami gunakan
$cookieStore
bukan$cookies
sumber
Sudut usang
$cookieStore
dalam versi 1.4.x, jadi gunakan$cookies
sebagai gantinya jika Anda menggunakan versi sudut terbaru. Sintaksnya tetap sama untuk$cookieStore
&$cookies
:Lihat Documents untuk ikhtisar API. Perlu diingat juga bahwa layanan cookie telah ditingkatkan dengan beberapa fitur penting baru seperti mengatur kedaluwarsa (lihat jawaban ini ) dan domain (lihat CookiesProvider Documents ).
Perhatikan bahwa, dalam versi 1.3.x atau di bawah, $ cookies memiliki sintaks yang berbeda dari di atas:
Juga jika Anda menggunakan bower, pastikan untuk mengetikkan nama paket Anda dengan benar:
di mana XYZ adalah versi AngularJS yang Anda jalankan. Ada paket lain dalam bower "angular-cookie" (tanpa 's') yang bukan paket sudut resmi.
sumber
FYI, saya mengumpulkan JSFiddle ini menggunakan
$cookieStore
, dua kontroler, a$rootScope
, dan AngularjS 1.0.6. Ada di JSFifddle sebagai http://jsfiddle.net/krimple/9dSb2/ sebagai pangkalan jika Anda bermain-main dengan ini ...Intinya adalah:
Javascript
HTML
sumber
http://docs.angularjs.org/api/ngCookies.$cookieStore
Pastikan Anda menyertakan http://code.angularjs.org/1.0.0rc10/angular-cookies-1.0.0rc10.js untuk menggunakannya.
sumber
$cookieStore
ke tanda tangan controller saya (yaitufunction AccountCtrl($scope, $cookieStore)
), tetapi kemudian mendapatkan pesan kesalahan berikut: Penyedia tidak dikenal: $ cookieStoreProvider <- $ cookieStore$cookieStore
sebagian besar ditujukan untuk cookie yang dibuat oleh klien. Untuk mengakses cookie yang dihasilkan server, saya harus menggunakannya$cookies
.https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular-cookies.min.js
) Lihat posting blog: blog.angularjs.org /AngularJS menyediakan modul ngCookies dan layanan $ cookieStore untuk menggunakan Cookie Browser.
Kita perlu menambahkan file angular-cookies.min.js untuk menggunakan fitur cookie.
Berikut adalah beberapa metode Cookie AngularJS.
dapatkan (kunci); // Metode ini mengembalikan nilai kunci cookie yang diberikan.
getObject (kunci); // Metode ini mengembalikan nilai deserialized dari kunci cookie yang diberikan.
dapat semua(); // Metode ini mengembalikan objek nilai kunci dengan semua cookie.
put (kunci, nilai, [opsi]); // Metode ini menetapkan nilai untuk kunci cookie yang diberikan.
hapus (kunci, [opsi]); // Metode ini menghapus cookie yang diberikan.
Contoh
Html
JavaScript
Saya telah mengambil referensi dari http://www.tutsway.com/simple-example-of-cookie-in-angular-js.php .
sumber
Tambahkan angular cookie lib: angular-cookies.js
Anda dapat menggunakan parameter $ cookies atau $ cookieStore ke controller masing-masing
Kontroler utama menambahkan suntikan ini 'ngCookies':
Gunakan Cookie di controller Anda seperti ini:
sumber
Jawaban asli yang diterima menyebutkan plugin jquery.cookie . Namun beberapa bulan yang lalu, namanya diubah menjadi js-cookie dan ketergantungan jQuery dihapus. Salah satu alasannya adalah membuatnya mudah diintegrasikan dengan kerangka kerja lain, seperti Angular.
Sekarang, jika Anda ingin mengintegrasikan js-cookie dengan sudut, semudah seperti:
Dan itu saja. Tidak ada jQuery. Tanpa ngCookies.
Anda juga dapat membuat instance kustom untuk menangani cookie sisi server tertentu yang ditulis secara berbeda. Ambil contoh PHP, yang mengubah spasi
di sisi server menjadi tanda tambah
+
alih-alih juga persen-kodekan:Penggunaan untuk Penyedia kustom akan seperti ini:
Saya harap ini membantu siapa pun.
Lihat info terperinci dalam edisi ini: https://github.com/js-cookie/js-cookie/issues/103
Untuk dokumen terperinci tentang cara mengintegrasikan dengan sisi server, lihat di sini: https://github.com/js-cookie/js-cookie/blob/master/SERVER_SIDE.md
sumber
Berikut ini contoh sederhana menggunakan $ cookies. Setelah mengklik tombol, cookie disimpan, dan kemudian dikembalikan setelah halaman dimuat ulang.
app.html:
app.js:
sumber