从匿名函数访问控制器变量

Accessing controller variable from anonymous function

本文关键字:访问控制 控制器 变量 访问 函数      更新时间:2023-09-26

我正在编写AngularJS应用程序。我需要从SQLite3数据库加载数据。我使用的架构是:我有一个使用express的Node.js服务器,它通过socket.io与angular.js应用程序通信。所以,我从客户端请求从数据库中获取信息,服务器收集信息并将其发送回客户端。

在这里,我试图初始化一个对象数组:main.meds(使用angular.js routeProvider,我将'MainCtrl'引用为'main'):

angular.module('medsOrmApp').controller('MainCtrl', function() {
  this.socket = io();
  this.meds = [];
  this.socket.emit('loadMeds', 'gimme the list !');
  this.socket.on('medsResponse', function(data) {
    console.log(data);
    for (var i = 0; i < data.length; i++) {
      var tmp = {};
      tmp.id = data[i].ID_MEDICAMENTO;
      tmp.nombre = data[i].NOMBRE_MEDICAMENTO;
      tmp.cantidad = data[i].CANTIDAD_DISPONIBLE;
      tmp.lab = data[i].LABORATORIO;
      meds.push(tmp); // ERROR: 'meds' is not defined
    }
  });
});

问题是我无法从匿名函数内部访问"meds"。我尝试过medsthis.meds,但都没有成功。

如果使用$scope,这不会起作用吗?

angular.module('medsOrmApp').controller('MainCtrl', function($scope, $timeout) {
  this.socket = io();
  this.meds = [];
  this.socket.emit('loadMeds', 'gimme the list !');
  this.socket.on('medsResponse', function(data) {
    console.log(data);
    for (var i = 0; i < data.length; i++) {
      var tmp = {};
      tmp.id = data[i].ID_MEDICAMENTO;
      tmp.nombre = data[i].NOMBRE_MEDICAMENTO;
      tmp.cantidad = data[i].CANTIDAD_DISPONIBLE;
      tmp.lab = data[i].LABORATORIO;
      this.meds.push(tmp); // ERROR: 'meds' is not defined
    }
  });
});

编辑:添加this.meds.push怎么样?