我使用socket获取数据到angularJS控制器。
$rootScope.list1= '';
socket.emit('ticker', symbol);
socket.on('quote', function(data) {
$rootScope.list1 = angular.fromJson(data.substring(3));
//I can't call any function from here to use this variable
});
我想在下面的代码中使用更新的list1变量,但我无法将其值作为''。 这可能是因为我试图在更新之前,即在收到响应之前,在我的脚本中访问它。
有没有办法可以在下面的代码中使用变量list1的更新值。
正如@Manish Singh在其中一个答案中所建议的那样,我尝试了$ rootScope.watch.It反映了上面代码的新价值,但不代表下面给出的代码。
$rootScope.peers = [];
industrysearch.searchindustry(indussymbol).then(function(results) {
industrysearch.searchpeers($scope.industrystock[0]._source.industry).then(function(results1) {
for (var number_stocks = 0; number_stocks < results1.length; number_stocks++) {
$rootScope.peers.push(results1[number_stocks]);
}
});
});
$rootScope.$watch('peers', function(newVal1, oldVal1) {
console.log(newVal1); //prints []
});
一个是正常变量,一个用作数组。我可以看到任何其他差异。
$ watchCollection用于我错过的数组/集合。下面的代码正在运行。
$rootScope.$watchCollection('peers', function(newVal1, oldVal1) {
console.log(newVal1);
});
感谢您的帮助!
答案 0 :(得分:0)
如何在$ rootScope上使用手表
$rootScope.$watch('list1', function(newVal, oldVal) {
//Do Something
)};
答案 1 :(得分:0)
尝试“$ applyAsync”:
$rootScope.list1= '';
socket.emit('ticker', symbol);
socket.on('quote', function(data) {
$rootScope.$applyAsync(function(){
$rootScope.list1 = angular.fromJson(data.substring(3));
});
});