2016-09-01 3 views
0

So überwachen Sie eine Variable, die sich in einem "Service" -Modul innerhalb eines "Direktiven" -Moduls befindet. Ich habe ein Servicemodul.So überwachen Sie eine Variable bei einer Änderung Angularjs

angular 
.module('SGA') 
.service('messageService', [messageService]); 
function messageService() { 
var ctrl = this;  
this.messages = []; 
this.send = function (message, type) { 
    ctrl.messages.push({ text: message, type: type }); 
}; 

und ich habe eine Richtlinie Modul

angular.module('SGA').directive('message', function() { 

return { 
    restrict: 'E', 
    scope: {}, 
    bindToController: { 
     msg: '@' 
    }, 
    templateUrl: "assets/templates/message/message.html", 
    controllerAs: 'ctrl', 
    link: function(){} 
} 
}) 

Ich möchte, dass, wenn die Variable „Meldungen“ die Richtlinie Modul ändern geändert wird, und schickte den neuen Wert für templateUrl. Ich muss immer die Variable überwachen, denn wenn sie etwas bekommt, muss ich auf der Seite zeigen

Antwort

1

Sie müssen Ihren Dienst in die Richtlinie injizieren.

angular.module('SGA').directive('message', 'messageService', function (messageService) { 

Dann in Ihrer Link-Funktion

link: function (scope){ 
    messageService.send("hello"); 
    scope.messages = messageService.getMessages(); 
} 

Blick in Versprechen Ihren Umfang variable Nutzung von Dienstleistungen https://docs.angularjs.org/api/ng/service/ $ q

+0

Diese "Botschaften" von "messageService" zu helfen, Zeit der Einrichtung wird durch seinen absatecido ein "Abfangjäger". Es wäre sowieso vorhanden? –

+0

mit nicht strengen Modus Winkel wird davon ausgegangen, dass der Dienst verfügbar ist und versuchen, es zu greifen. Wenn Sie mit Einspritzung strenger sein möchten, würde ich einem Muster wie diesem folgen http://stackoverflow.com/questions/37396423/angular-configure-es6-syntax/37396615#37396615 – d3l33t

+0

Ich habe nicht verstanden –

Verwandte Themen