如何在angularjs中读取服务内部的变量?

fab*_*xis 3 javascript service angularjs

我想知道如何获取服务中变量的值,我有以下代码:

myModule.service('notify', ['$window', function(win) {  
       var msgs = []; // I want to read this variable
       this.message = function(msg) {
         msgs.push(msg);
         if (msgs.length == 3) {
           win.alert(msgs.join("\n"));
           msgs = [];
         }
       };
     }]);
Run Code Online (Sandbox Code Playgroud)

我想从控制器读取msgs变量.

Ham*_*pus 6

使用var声明变量使它们在函数范围内是局部的.如果要公开它,可以将其存储在对象本身上.

myModule.service('notify', ['$window', function(win) {  
   this.msgs = []; // I want to read this variable
   this.message = function(msg) {
     this.msgs.push(msg);
     if (this.msgs.length == 3) {
       win.alert(this.msgs.join("\n"));
       this.msgs = [];
     }
   };
 }]);
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过阅读检索服务上的消息

service.msgs
Run Code Online (Sandbox Code Playgroud)

更好的模式是创建一个getter方法来检索消息.

myModule.service('notify', ['$window', function(win) {  
   var msgs = []; // I want to read this variable
   this.getMessages = function () {
     return msgs;
   };
   this.message = function(msg) {
     msgs.push(msg);
     if (msgs.length == 3) {
       win.alert(msgs.join("\n"));
       msgs = [];
     }
   };
 }]);
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过致电检索您的消息

service.getMessages();
Run Code Online (Sandbox Code Playgroud)