我正在编写一个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'。我试过meds
和this.meds
但没有成功。
答案 0 :(得分:0)
如果您使用$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
?