मैं एक पुराने प्रोजेक्ट पर काम कर रहा हूं जहां मैं AngularJS 1.x का उपयोग करता हूं और भाई-बहन के दायरे से संवाद करने में परेशानी होती है

App.js

var myApp = angular.module('myApp', ['ui.router', 'headerModule', 'dashboardModule', 'profileData', 'roiData', 'eventData', 'LocalStorageModule']);

// Use Routes to Header Changes
myApp.run( ['$rootScope', '$state', '$stateParams', function ($rootScope,   $state,   $stateParams)  {

    $rootScope.$on('callViewEvent', function(ev, x){
        console.log("here"); //getting printed
        $rootScope.$broadcast('vv',x);
    });

}]);

मेरे पास एक निर्देश है

eventData.js

var eventData = angular.module('eventData', ['angularPayments', 'ngFileUpload']);
eventData.directive('eventData', function () {
  return {
    restrict: 'EA',
    scope: {},
    replace: true,
    link: function ($scope, element, attributes) {

    },
    controller: function ($scope, $attrs, $http, $state, $rootScope, $window, $interval, Auth, Upload) {

       $scope.$on('vv', function(e, x){
           console.log("event called");
           $scope.viewEvent(x);
       });

    },
    templateUrl: 'directives/event/eventData.tpl.html'
  }
});

एक नियंत्रक मॉड्यूल

डैशबोर्डकंट्रोलर.जेएस

var dashboardModule = angular.module('dashboardModule', []);
dashboardModule.controller('dashboardController', function($scope, $rootScope, $http, Auth, $state ) {
    $scope.childmethod = function(x) {
        console.log("click"+x);
        $scope.$emit("callViewEvent", x);
    }
});

मैं बच्चे से माता-पिता के लिए घटना का उत्सर्जन कर रहा हूं और फिर दूसरे बच्चे में प्रसारित कर रहा हूं। एमिट काम कर रहा है लेकिन प्रसारण काम नहीं कर रहा है। वह दूसरा इवेंट कॉल काम कर रहा है

0
Karan Shah 28 फरवरी 2020, 05:11
तो आप कभी भी 'इवेंट कॉलेड' नहीं देखते हैं लेकिन आप 'यहाँ' देखते हैं?
 – 
see sharper
28 फरवरी 2020, 05:22
हां यह सही है
 – 
Karan Shah
28 फरवरी 2020, 05:42

2 जवाब

प्रयास करें:

    $rootScope.$on('vv', function(e, x){
       console.log("event called");
       $scope.viewEvent(x);
    });
0
see sharper 28 फरवरी 2020, 05:27
मैंने यह कोशिश की है लेकिन काम नहीं करता है। 'इवेंट कहा जाता है' नहीं देखा जाता है
 – 
Karan Shah
28 फरवरी 2020, 05:43
इसका बच्चे के साथ कुछ लेना-देना नहीं है
 – 
Karan Shah
28 फरवरी 2020, 05:57
क्या आप स्क्रीन पर दिए गए निर्देश को देख सकते हैं?
 – 
see sharper
28 फरवरी 2020, 05:58
नहीं। इसलिए जब मैं वास्तव में निर्देश को कॉल करने वाले बटन पर क्लिक करता हूं और अपने डैशबोर्ड पर वापस जाता हूं और पुनः प्रयास करता हूं, तो मुझे निर्देश दिया जा रहा है। लेकिन अगर मैं अपने डैशोबार्ड को रीफ्रेश और हिट करता हूं तो प्रतिक्रियाएं
 – 
Karan Shah
28 फरवरी 2020, 06:00
हम्म, ऐसा लगता है कि आपको उस पर काम करने की ज़रूरत है, क्योंकि एक गैर-तत्काल निर्देश निश्चित रूप से ईवेंट प्राप्त नहीं कर सकता है! यदि आप फंस गए हैं तो शायद एक नया प्रश्न पोस्ट करें।
 – 
see sharper
28 फरवरी 2020, 06:02

घटना के लिए सुनता घटक या तो तत्काल नहीं किया जा रहा है या घटना के प्रेषण के बाद इसे तत्काल किया जाता है।

डिबगिंग उद्देश्यों के लिए, घटक में एक console.log जोड़ें:

app.directive('eventData', function () {
  return {
    restrict: 'EA',
    scope: {},
    replace: true,
    link: function ($scope, element, attributes) {

    },
    controller: function ($scope, $attrs, $http, $state, $rootScope, $window, $interval, Auth, Upload) {

       //DEBUG TIMING
       console.log("eventData controller instantiated");

       $scope.$on('vv', function(e, x){
           console.log("event called");
           $scope.viewEvent(x);
       });

    },
    templateUrl: 'directives/event/eventData.tpl.html'
  }
});

ध्यान रखें कि $scope ईवेंट बस को हटा दिया गया है। इसका उपयोग करने से एंगुलर 2+ में माइग्रेशन अधिक कठिन हो जाएगा।

अधिक जानकारी के लिए देखें

0
georgeawg 28 फरवरी 2020, 17:31