如何从外部JavaScript函数更新控制器的范围变量

如何从外部JavaScript函数更新控制器的范围变量,javascript,angularjs,Javascript,Angularjs,我是angularJS的新手。我有一个关于如何从外部JavaScript函数更新范围变量的说明。我在任何地方都找不到方法,请帮助我,下面是我的代码片段供参考 var devices = {}; mainApp.controller('deviceDataController', function($scope) { console.log(devices); $scope.deviceDetails = devices; }); function deviceFunc (dat

我是angularJS的新手。我有一个关于如何从外部JavaScript函数更新范围变量的说明。我在任何地方都找不到方法,请帮助我,下面是我的代码片段供参考

var devices = {};
mainApp.controller('deviceDataController', function($scope) {
    console.log(devices);
    $scope.deviceDetails = devices;
});

function deviceFunc (data,index){ //here the data and index values are obtain after doing a for each for an array and data is an object
    device['device'+index] = data;
}


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
var设备={};
mainApp.controller('deviceDataController',函数($scope){
控制台日志(设备);
$scope.deviceDetails=设备;
});
函数deviceFunc(data,index){//这里的数据和索引值是在对数组的每个对象执行for之后获得的,数据是一个对象
设备['device'+索引]=数据;
}
现在,如果我在console.log行运行代码,我会得到“object{}”,但在这个行中,值在那里,但是当我将对象分解为它的第一个属性时,它会说是undefined,例如console.log(devices[device0].devicename)给了我undefined


如果有什么办法,请帮助我。

你不应该这样做,因为这不是管理数据的好方法。尝试重新构造代码

但是你仍然可以用很多不同的方法来做到这一点

示例:如果要从外部访问作用域,请尝试:

angular.element(someElement).scope();

完整文档:

感谢您的回复。。。但我找不到更好的方法。你能告诉我是否有吗?当然可以,但你表现得不够好。你在哪里叫deviceFunc?为什么它不在控制器中?您是否在多个控制器之间共享数据?如果是,则在$内调用use a service.deviceFunc。每个用于中断数组的循环都会执行ajax调用,以获取以对象格式提供的数据。是否可以使用代码创建一个Plunker(),这样会更容易。确定。。这是链接。。检查script.js