2017-09-09 14 views
0

Hallo Ich versuche, Daten von einem Controller zu einem anderen zu übergeben, aber die Daten werden nicht am anderen Ende der Benutzeroberfläche angezeigt.Daten werden nicht zwischen Controllern übertragen

das ist mein Service-Code: -

app.factory('ServiceF', function($rootScope) { 

var service = {}; 
    service.data = false; 
    service.sendData = function(data){ 
     this.data = data; 
     $rootScope.$broadcast('data_shared'); 
    }; 
    service.getData = function(){ 
    return this.data; 
    }; 
    return service; 
}); 

Regler 1 Code: -

app.controller('Ctrlone', ["$scope", "ServiceF", function ($scope, ServiceF) { 

$scope.Info= {}; 
     $scope.ser= function(){ 
      ServiceF.sendData($scope.Info); 
      console.log($scope.Info); 
      }; 
    }]);  

Die $scope.Info Daten erfolgreich hier aus einer anderen Quelle kommt die Ich habe nicht gepostet. Aber es kommt.

Controller 2: -

app.controller('Ctrltwo', ["$scope" ,"ServiceF", 
function($scope , ServiceF) { 
$scope.Info= ''; 
       $scope.$on('data_shared',function(){ 
        var good = ServiceF.getData();  
      $scope.Info = good; 
     }); 
}]); 

UI, wo ich Informationen angezeigt werden soll: -

<div class="col-sm-8"> 
      <h1 class="mainTitle">Ok Start </h1> 
      <h2>{{good}}</h2> 

</div> 

Button-Klick-Funktion vom 1. UI: -

<label class="cardlabel" style="width:11vw" ui-sref="uitwo" ng-click="ser()">Send</label> 

Wohin gehe ich jetzt falsch? Info wird nicht auf der 2. Benutzeroberfläche angezeigt. Und wie kann ich prüfen, ob Daten den Service weitergeben?

+0

Es wäre viel einfacher, Fehler in Ihrem Code zu finden (und zu vermeiden), wenn Sie ihn ordnungsgemäß und konsistent eingerückt haben und wenn Sie die Namenskonventionen respektiert haben. Die Hälfte Ihrer Variablen beginnt mit einem Kleinbuchstaben und die andere Hälfte mit einem Großbuchstaben. Wie erinnerst du dich daran, welche welche Konvention benutzt? Warum nicht immer die gleiche Konvention verwenden? –

+0

@JBNizet Ich werde das im besseren Format verbessern, Danke. Ich erinnere mich. – WhoAmI

Antwort

0

Sie haben kein Attribut mit dem Namen good in Ihrem Bereich. So wird {{ good }} immer leer sein.

Das Attribut scope heißt Info. Sie wollen also {{ Info }}.

+0

Ich tat es, noch zeigen die Daten nicht – WhoAmI

+0

Ist der zweite Controller bereits erstellt, und seine Ansicht auf der Seite angezeigt, wenn Sie auf den Link klicken? Denn wenn es nicht ist, hört noch nichts auf das Ereignis zu, wenn der erste Controller es ausstrahlt. Verwenden Sie Ihren Debugger, fügen Sie console.log() in den Code ein, und wenn Sie immer noch nicht weiterkommen, geben Sie ein vollständiges minimales Beispiel ein, das das Problem reproduziert. –

+0

Ja, der zweite Controller ist bereits erstellt, und nein, seine Ansicht wird auf einer anderen Seite angezeigt .. die mit dem zweiten Controller verknüpft ist. – WhoAmI

Verwandte Themen