Saya memiliki situasi di aplikasi saya di mana saya harus reload menu setiap kali peran pengguna perubahan(salah Satu pengguna dapat memiliki peran di beberapa perusahaan).
Aku bertanya-tanya apa adalah cara terbaik untuk mendekati masalah ini.
saat ini saya melakukan hal-hal berikut:
app.controller('menuLoadingCtrl', function($location, $scope, authService){
$scope.model.initialRole = authService.getRole();
$scope.$watch(function(){return authService.getRole()}, function(val){
if(val && val != $scope.model.initialRole){
$scope.layout.menuSrc = 'partials/menu.html';
}
});
})
Sederhana mengarahkan pengguna ke menu loading melihat, dan dari sana, kembali ke tampilan menu setelah peran ini dilakukan loading. Aku punya ini dibungkus dalam sebuah fungsi:
$scope.layout.reloadMenu = function(){
$scope.layout.menuSrc = 'partials/menuLoading.html';
}
yang saya sebut di setiap skenario di mana saya ingin reload menu.
Aku bertanya-tanya jika saya dapat membuat proses ini lebih otomatis dengan penyiaran acara ini dari layanan pada $rootScope, dan kemudian mendengarkan itu di controller.
Setiap pikiran\saran ini akan sangat dihargai.
$watch()
adalah melakukan kotoran-pemeriksaan: fungsi membuat perbandingan yang masing-masing mencerna siklus. Di sisi lain, $broadcast()
menjalar acara hanya ketika ada satu. Tentu, $broadcast()
lebih murah dari $watch()
.
Tapi apakah anda benar-benar perlu khawatir tentang kinerja di sini? Satu primitif dibandingkan dengan siklus yang ada. Namun, secara konseptual, $watch()
jelas apa yang anda butuhkan: anda ingin melakukan suatu tindakan setiap kali perubahan variabel. Saya dapat't bayangkan menggunakan $broadcast()
di sini.