在回调方法中访问控制器 $scope
Accessing controller $scope in callback method
嗨哟!
我将 ROS(机器人操作系统)与 roslib.js 和 angular.js 结合使用。
一个方法正在调用一个服务,这是通过网络完成的,需要一些时间。最好的方法是,这个调用是阻塞的。但事实并非如此。从回调中接收到所需数据,但无法将数据复制到控制器的其他位置。
我认为是Scopes的问题。但是我已经实现了一个用于接收数据的工厂,并尝试使用 $rootScope 进行了一次肮脏的黑客攻击,但没有任何效果...
下面是一些描述性代码:
查看:
这里一个ng-repeat监听控制器rosCtrl
中的变量list
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});
}
}
数据已成功接收,我可以使用其他方法将项目添加到列表并更新视图。所以机制上没有任何问题。
希望我能让你理解这个问题。如果没有,请告诉我,所以我会尽量解释得更详细。
提前致谢!
这样的事情怎么样:
http://plnkr.co/edit/jPH4d5RiinxOGuxMjSRr?p=preview
(function(angular) {
'use strict';
angular.module('scopeExample', [])
.controller('rosController', ['$scope', function($scope) {
$scope.list = ['World'];
$scope.sayHello = function() {
setTimeout(function callService(){
$scope.list.push('Another '+Math.random().toString().split('.')[1]);
},100);
}
}]);
})(window.angular);
感谢您的回答。我尝试了你的想法,但它们也没有用。同时我发现了问题:另一个程序员两次添加嵌套在另一个控制器中的同一个控制器,这就是为什么列表的内容一直是空的。有时候生活就是这么简单..... Gnarf.....
嗨哟!
我将 ROS(机器人操作系统)与 roslib.js 和 angular.js 结合使用。
一个方法正在调用一个服务,这是通过网络完成的,需要一些时间。最好的方法是,这个调用是阻塞的。但事实并非如此。从回调中接收到所需数据,但无法将数据复制到控制器的其他位置。
我认为是Scopes的问题。但是我已经实现了一个用于接收数据的工厂,并尝试使用 $rootScope 进行了一次肮脏的黑客攻击,但没有任何效果...
下面是一些描述性代码:
查看:
这里一个ng-repeat监听控制器rosCtrl
中的变量listJS:
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});
}
}
数据已成功接收,我可以使用其他方法将项目添加到列表并更新视图。所以机制上没有任何问题。
希望我能让你理解这个问题。如果没有,请告诉我,所以我会尽量解释得更详细。
提前致谢!
这样的事情怎么样:
http://plnkr.co/edit/jPH4d5RiinxOGuxMjSRr?p=preview
(function(angular) {
'use strict';
angular.module('scopeExample', [])
.controller('rosController', ['$scope', function($scope) {
$scope.list = ['World'];
$scope.sayHello = function() {
setTimeout(function callService(){
$scope.list.push('Another '+Math.random().toString().split('.')[1]);
},100);
}
}]);
})(window.angular);
感谢您的回答。我尝试了你的想法,但它们也没有用。同时我发现了问题:另一个程序员两次添加嵌套在另一个控制器中的同一个控制器,这就是为什么列表的内容一直是空的。有时候生活就是这么简单..... Gnarf.....