0
我有一個控制器,調用服務來執行到socket.io服務器的調用。該服務工作(向socket.io發送命令),但控制器上的回調(promise)未被觸發。我錯過了什麼?角度工廠沒有返回值給控制器
.controller('SettingsCtrl1', function($scope,socket) {
socket.switchSpace(spaces).$promise.then(function(data) {
alert("CALLBACK: " + data); //does not fire
});
});
,並在我的服務:
.factory('socket', function (socketFactory) {
var connection = io.connect('http://example.com:3000');
var socket = socketFactory({
ioSocket: connection
});
socket.switchSpace = function(spaces) {
socket.emit('leaveSpace', spaces.oldspace, function(callback) {
if(callback == 'success') { //we make it here
socket.emit('joinSpace', spaces.newspace, function(callback) {
if(callback == 'success') {
//we make it here
return callback; //does not make it back to controller
}
})
}
})
}
return socket;
});
你的控制器沒有調用返回'callback'功能。 ..所以它返回到'socket.emit'閉包,而不是你的控制器。 –
@ShaunScovil即使硬編碼'返回成功'到socket.switchSpace函數的末尾,我也無法獲得任何東西回到控制器。 – lilbiscuit