从AngularJS中的socket.io获取变量
基本上我有两个数据源,一个是来自socket.io的实时数据,另一个是json对象。我在前端使用这两种方法,但问题是我需要将一个变量从socket.io传递到json解析器: 此控制器适用于我的视图:从AngularJS中的socket.io获取变量,angularjs,socket.io,angularjs-scope,angularjs-service,angularjs-controller,Angularjs,Socket.io,Angularjs Scope,Angularjs Service,Angularjs Controller,基本上我有两个数据源,一个是来自socket.io的实时数据,另一个是json对象。我在前端使用这两种方法,但问题是我需要将一个变量从socket.io传递到json解析器: 此控制器适用于我的视图: .controller('mainCtrl', ['$scope','socket','currentData', function($scope, socket, currentData){ // It's updated every 2 seconds soc
.controller('mainCtrl', ['$scope','socket','currentData', function($scope, socket, currentData){
// It's updated every 2 seconds
socket.on('chnl', function(data){
// Passed to view OK
$scope.realtimeData = data;
// And i need to pass this to currentData.
$scope.foo = data.foo;
});
// Here i'm getting json response from factory which is computed based on socket.io foo variable and then passed to view.
currentData.get().then(function(data){
if($scope.foo)...
...
$scope..
});
}]
问题是,我尝试过的任何方法最终都会在每个传入的socket.io包上调用json对象,我需要在初始化时计算它并将数据传递给视图
有什么解决办法吗
谢谢。如果您需要它只运行一次进行初始化 将对JSON服务的调用移动到回调上的
。将其放在仅当初始化变量设置为false
时才运行的条件中。设置数据后,将该变量切换为true
,使其不再运行:
.controller('mainCtrl', ['$scope','socket','currentData', function($scope, socket, currentData){
$scope.fooInit = false;
socket.on('chnl', function(data){
$scope.realtimeData = data;
$scope.foo = data.foo;
if (!$scope.fooInit) {
currentData.get().then(function(data){
if($scope.foo)...
...
$scope..
});
$scope.fooInit = true;
}
});
}])