Javascript 在回调方法中访问控制器$scope

Javascript 在回调方法中访问控制器$scope,javascript,angularjs,angularjs-scope,ros,Javascript,Angularjs,Angularjs Scope,Ros,嗨 我将ROS(机器人操作系统)与roslib.js和angular.js结合使用 一个方法正在调用一个服务,这是通过网络完成的,需要一些时间。最好的办法是,该呼叫被阻塞。但事实并非如此。从回调中接收所需数据,但无法将数据复制到其他地方的控制器 在我看来,这是一个范围的问题。但我已经实现了一个接收数据的工厂,并尝试了一个$rootScope的肮脏黑客攻击,但没有任何效果 以下是一些描述性代码: 查看: Controller rosController var rosCtrl = this;

我将ROS(机器人操作系统)与roslib.js和angular.js结合使用

一个方法正在调用一个服务,这是通过网络完成的,需要一些时间。最好的办法是,该呼叫被阻塞。但事实并非如此。从回调中接收所需数据,但无法将数据复制到其他地方的控制器

在我看来,这是一个范围的问题。但我已经实现了一个接收数据的工厂,并尝试了一个$rootScope的肮脏黑客攻击,但没有任何效果

以下是一些描述性代码:

查看

Controller rosController
  var rosCtrl = this;
  rosCtrl.list = [];

  this.receiveData = function(){
    callService(input, function(result){
      ..
      .. some logging for debugging ..
      rosCtrl.list.push({name: "a", type: 1});
    }
  }
在这里,ng repeat侦听控制器rosCtrl中的变量列表

JS

Controller rosController
  var rosCtrl = this;
  rosCtrl.list = [];

  this.receiveData = function(){
    callService(input, function(result){
      ..
      .. some logging for debugging ..
      rosCtrl.list.push({name: "a", type: 1});
    }
  }
数据已成功接收,我可以使用其他方法将项目添加到列表中,并更新视图。因此,该机制没有任何问题

希望我能让你了解这个问题。如果没有,请让我知道,所以我会尽量解释得更详细


提前谢谢你

像这样的东西怎么样:


谢谢你的两个答案。我试过你的想法,但也不管用。同时我发现了问题:另一个程序员添加了两次嵌套在另一个控制器中的同一个控制器,这就是为什么列表的内容总是空的。有时候生活就是那么简单。。。。。Gnarf….

列表是范围变量吗?如果否,那么您想在哪一行为范围变量指定新值?如果赋值是在角度上下文之外执行的,您是否尝试在上下文中获取$scope并在赋值后调用$scope.$apply()?