Bagaimana cara saya gunakan $rootScope
untuk menyimpan variabel dalam pengontrol yang ingin saya akses nanti di pengontrol lain? Sebagai contoh:
angular.module('myApp').controller('myCtrl', function($scope) {
var a = //something in the scope
//put it in the root scope
});
angular.module('myApp').controller('myCtrl2', function($scope) {
var b = //get var a from root scope somehow
//use var b
});
Bagaimana saya melakukan ini?
Jawaban:
Variabel yang diatur pada root-scope tersedia untuk lingkup controller melalui pewarisan prototypical.
Berikut ini adalah versi modifikasi dari demo @ Nitish yang menunjukkan hubungannya sedikit lebih jelas: http://jsfiddle.net/TmPk5/6/
Perhatikan bahwa variabel rootScope diatur ketika modul diinisialisasi, dan kemudian masing-masing ruang lingkup yang diwarisi mendapatkan salinan mereka sendiri yang dapat diatur secara independen (
change
fungsi). Selain itu, nilai rootScope juga dapat diperbarui (changeRs
fungsi dalammyCtrl2
)sumber
$scope.test = 'Some value'
, akankah$rootScope.test
perubahan juga?$rootScope
global (atas semua pengontrol) tetapi$scope
tetap lokal ke controller. Jika Anda menggunakan$scope.test
dua pengontrol yang berbeda, ketahuilah mereka adalah dua variabel yang berbeda apakah$rootScope.test
akan menjadi variabel yang sama di semua pengontrolBerbagi data antara pengontrol adalah hal yang sangat baik untuk Pabrik / Layanan. Singkatnya, ini berfungsi seperti ini.
Anda dapat melihat contoh kerja di biola ini: http://jsfiddle.net/mbielski/m8saa/
sumber
$rootScope
boleh digunakan untuk berbagi variabel ketika kita memiliki hal-hal seperti layanan dan pabrik.DEMO
sumber
saya tidak menemukan alasan untuk melakukan ini $ scope.value = $ rootScope.test;
$ scope sudah prototipe inheritance dari $ rootScope.
Silakan lihat contoh ini
sekarang Anda dapat mengikat variabel cakupan ini di mana saja di tag aplikasi.
sumber
pertama-tama simpan nilai dalam $ rootScope sebagai
$ rootScope adalah induk dari semua $ lingkup, setiap $ lingkup menerima salinan data $ rootScope yang dapat Anda akses menggunakan $ lingkup itu sendiri.
sumber
Jika itu hanya "akses di pengontrol lain" maka Anda dapat menggunakan konstanta sudut untuk itu, manfaatnya adalah; Anda dapat menambahkan beberapa pengaturan global atau hal lain yang ingin Anda akses di seluruh aplikasi
dan kemudian mengaksesnya seperti:
(tidak menguji)
info lebih lanjut: http://ilikekillnerds.com/2014/11/constants-values-global-variables-in-angularjs-the-right-way/
sumber
http://astutejs.blogspot.in/2015/07/angularjs-what-is-rootscope.html
sumber
Ada beberapa cara untuk mencapai yang ini: -
1. Tambahkan
$rootScope
di.run
metode2. Buat satu layanan dan akses di kedua pengontrol.
sumber