मेरे पास नियंत्रक ए है जो साझा डेटा और नियंत्रक बी को कुछ डेटा भेजता है जिसे उस डेटा को पढ़ना चाहिए। समस्या नियंत्रक बी नियंत्रक ए की तुलना में एक अलग पृष्ठ (एक ही वेबसाइट पर) पर है, यानी मैं smth करता हूँ। नियंत्रक ए पर, क्लिक बटन (जो सेवा को डेटा भेजता है) और एक और पेज खोलें जहां नियंत्रक बी है जो सेवा से डेटा पढ़ना चाहिए। लेकिन कुछ नहीं होता है, तो मेरा सवाल यह है कि विभिन्न पृष्ठों पर नियंत्रक इस तरह से संवाद कर सकते हैं?विभिन्न टैब में नियंत्रकों के बीच कोणीय संचार
यहाँ कैसे मैं इसे करने की कोशिश की है, लेकिन कोई भाग्य के साथ:
सेवा:
publicApp.angularModule.service('controllerCommunicationService', function ($rootScope) {
var communicationService = {};
communicationService.data = null;
communicationService.setDataForBroadcast = function(data) {
this.data = data;
this.broadcastData();
};
communicationService.broadcastData = function() {
$rootScope.$broadcast('handleBroadcast');
};
return communicationService;
});
नियंत्रक एक के प्रासंगिक भागों:
publicApp.angularModule.controller('PublicRoutinesCtrl', function ($scope, $rootScope, routinesService, controllerCommunicationService, bootstrapCarouselService) {
$scope.goToNextScreen = function() {
var currentIndex = bootstrapCarouselService.getcurrentSlideIndex();
controllerCommunicationService.setDataForBroadcast($scope.items[currentIndex].Routine.RoutineId);
};
नियंत्रक बी के प्रासंगिक भागों:
$rootScope.$on('handleBroadcast', function() {
console.log("TEST");
$http.post("/EditWorkout/PostRoutineId", { routineId: controllerCommunicationService.data })
.success(function() {
console.log("success");
})
.error(function (responseData) {
console.log("Error !" + responseData);
});
});
और यहां तक कि console.log("TEST");
निकाल दिया नहीं गया है।
अधिक है, लेकिन अगर आप पर्याप्त देरी के साथ एक $ टाइमआउट में 'नियंत्रकसंचार सेवा .setDataForBroadcast()' डालें, आपका कोड काम करेगा, बशर्ते लक्षित पृष्ठ में लोड करने के लिए पर्याप्त समय हो। हालांकि निश्चित रूप से भरोसेमंद नहीं है। – Lavamantis