में डेटा उपलब्ध नहीं है मैंने यादृच्छिक अंतराल पर कुछ डेटा निकालने के लिए अपना नोड सर्वर सेट किया है, और डेटा क्लाइंट/ब्राउज़र पर जा रहा है; हालांकि, मैं यह नहीं समझ सकता कि मेरे ऐप के नियंत्रक में इसका उपयोग कैसे किया जाए।Node.js + AngularJS + Socket.io: धक्का नियंत्रक
#node.js file: /server.js (truncated for brevity)
var http = require('http').createServer(handler),//refers to handler()
fs = require('fs'),
io = require('socket.io').listen(http);
http.listen(8000);
…
io.sockets.on('connection', function (socket) {
/* DUMMY CODE: this generates fake alerts at random intervals */
(function loop() {
var rand = Math…;
…
setTimeout(function(){
…
var alert = { … };
socket.emit('alert', {
"alert": alert
});//socket.emit()
loop();
}, rand);
}());
});//io.sockets.on()
जब मैं टर्मिनल के लिए alert
प्रवेश करते है, यह इस तरह दिखता है:
alert: {
id: 258,
lat: -95.20933,
long: 37.027676,
neighbourhood: "Downtown",
time: //stringified js timestamp
}
और arguments
नीचे से डेटा मैं चाहता हूँ (मूल रूप से alert
के रूप में ही) शामिल हैं।
# /app/js/services.js
angular.module('BAR.services' , [])
.factory('socketio', function($rootScope){
var socket = io.connect();
return {
on: function(event, callback) {
socket.on(event, function(){
//console.log(arguments);
$rootScope.$apply(function(){
callback.apply(socket, arguments);
});//$rootScope.$apply()
});//socket.on()
},//on
emit: function(event, data, callback) {
socket.emit(event, data, function(){
//console.log(arguments);
$rootScope.$apply(function(){
if (callback) callback.apply(socket, arguments);
});//$rootScope.$apply()
});//socket.emit()
},//emit
disconnect: function() {
socket.disconnect();
}
}//return
});// AlertServices
हालांकि, मैं समझ नहीं मेरी नियंत्रक में arguments
से डेटा का उपयोग करने के लिए कैसे: जब मैं नियंत्रक में यहाँ ब्राउज़र की कंसोल के लिए data
लोग इन
# /app/js/controllers.js
function Alerts($scope , socketio) {
socketio.on('alert', function(data) {
console.log(data); /* I expect this to be the data I want */
$scope.alert = data.alert;
});
$scope.disconnect = function(){
socketio.disconnect();
}
}
Alerts.$inject = ['$scope','socketio'];
, मैं एक बहुत बड़ा मिलता है ऑब्जेक्ट जो $scope
का अभिभावक प्रतीत होता है; और data.alert
अपरिभाषित है। मैंने यह socketio.on('alert', function(data , args)
जैसे दूसरे पैरामीटर को निर्दिष्ट करने का भी प्रयास किया है, यह सोचकर arguments
हो सकता है (क्योंकि callback.apply(…)
सेवाओं में 2 है), लेकिन जब मैंने इसे कंसोल पर किया और लॉग किया, args
अपरिभाषित लौटा।
बीटीडब्ल्यू, मैं इसे AngularJS इंटर्न द्वारा a tutorial पर आधारित करता हूं। अलग-अलग टुकड़ों के समान नाम थे, इसलिए मुझे यह पता लगाने में थोड़ा परेशानी थी कि प्रत्येक अलग-अलग peices क्या किया (यह भी मददगार नहीं था कि यह जेड में था)।
मैं वास्तव में क्या करना चाहता हूं alert
से डेटा के साथ मेरे दृश्य में बाध्यकारी अद्यतन करना है।
हे भगवान अब है कि समझ में आता है:
समाधान
$apply
करने के लिए कॉल के बाहर बहस पर कब्जा करने और अपने कॉलबैक में उन पारित करने के लिए किया जाएगा। मैं सोच रहा था कि उसने केवल एक बार इसका इस्तेमाल करने के लिए तर्कों को निर्दिष्ट करने पर परेशान क्यों किया। मैं सुबह में कोशिश करूंगा। धन्यवाद! – jacobयहां उस आलेख के लेखक: यह सही उत्तर है। – btford
Hazzaaah! इसने काम कर दिया। धन्यवाद! – jacob