2016-06-05 8 views
0

Im Anschluss an diesen reference, Ich versuche, ein neues service in Winkel zu machen, die eine Nachricht auf Benutzeraktionen zu zeigen, dienen wie add, edit, update, delete. Was ich zur Zeit geschehen ist,Herstellung Winkelservicearbeiten richtig

meanApp.factory("flash", function($rootScope) { 
    var queue = [], currentMessage = ''; 

    $rootScope.$on('$locationChangeSuccess', function() { 
    if (queue.length > 0) 
     currentMessage = queue.shift(); 
    else 
     currentMessage = ''; 
    }); 

    return { 
    set: function(message) { 
     queue.push(message); 
    }, 
    get: function(message) { 
     return currentMessage; 
    } 
    }; 
}); 

Dies ist ein Teil des Codes, die ich in einer anderen Controller, um injizieren will die Nachricht zu erhalten, wenn Benutzer im System grundlegenden CRUD tun. Ich habe postController, wo ich versuche, diese flash Service wie zu injizieren.

//considering this example which handles the delete operating 
//delete post 
meanApp.controller('postDeleteController', function($stateParams, $scope, $http, $location, $state) { 
    $http.delete('/api/posts/' + $stateParams.id).success(function(response) { 
     $location.path('/blog/list'); 
     //refresh(); 
    }); 
}); 

Jetzt möchte ich, dass flash Dienst in diesem Controller injizieren und eine Nachricht wie post deleted successfully Art der Meldung in Bootstrap-Benachrichtigung angezeigt werden soll, sobald die Post Benutzer löschen. Was muss ich noch hinzufügen, damit die Nachricht in meiner Ansicht angezeigt wird? Ich verwende folgenden Code in meinem gemeinsamen Layout der message

<div class="alert" ng-show="flash.get().length"> 
      <b> 
       Alert! 
      </b> 
      <br/> 
      {{flash.get()}} 
     </div> 
+0

was ein Fehler ?? –

+0

Ich habe 'flash'-Dienst in meinen' postDeleteController' injiziert, aber nichts wurde angezeigt – Sid

+0

Nun, ich sehe nicht, wo Sie irgendetwas in der Warteschlange speichern. Die Methode set() wird im gebuchten Code nie aufgerufen. Außerdem ist die Methode success() schon lange nicht mehr aktuell. Benutze dann(). Sie haben auch nicht den Code des Controllers angezeigt, in den Flash injiziert wird. –

Antwort

1

Sie zeigen den Flash-Service injizieren Sie erstellt haben ..

meanApp.controller('postDeleteController', function($stateParams, $scope, $http, $location, $state, flash) { 

Und ich bin nicht sicher, können Sie Flash verwenden in Ihrer Vorlagendatei directly..So hierfür wird eine andere Art und Weise zu arbeiten, sein Wert einer variablen zugewiesen werden in der Steuerung ein dann wie in Vorlage verwenden ..

meanApp.controller('postDeleteController', function($stateParams, $scope, $http, $location, $state, flash) { 
$http.delete('/api/posts/' + $stateParams.id).success(function(response) { 
    $location.path('/blog/list'); 
    $scope.value = flash.get(); 
    //refresh(); 
}); 

});

Und in der Vorlagendatei Sie verwenden können ..

<div class="alert" ng-show="value.length"> 
     <b> 
      Alert! 
     </b> 
     <br/> 
     {{value}} 
    </div> 
Verwandte Themen