Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs在javascript中获取全局范围变量_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

angularjs在javascript中获取全局范围变量

angularjs在javascript中获取全局范围变量,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我试图通过Angularjs控制器中的ajax请求从服务器获取数据,然后通过另一个javascript文件访问数据。我正在使用canvas并试图通过angularjs控制器获取数据库中存储的数据 我将数据存储在angularjs控制器中的全局范围变量中,并尝试通过画布javascript文件访问它 我知道您可以访问如下控制器方法: var scope = angular.element($('#Controller')).scope(); scope.$apply(function(){

我试图通过Angularjs控制器中的ajax请求从服务器获取数据,然后通过另一个javascript文件访问数据。我正在使用canvas并试图通过angularjs控制器获取数据库中存储的数据

我将数据存储在angularjs控制器中的全局范围变量中,并尝试通过画布javascript文件访问它

我知道您可以访问如下控制器方法:

var scope = angular.element($('#Controller')).scope();
scope.$apply(function(){
      scope.getFunc();           
});
但是,每当我尝试访问一个全局范围变量时,它就会返回这个名为[remove:function]的对象,我不知道如何从这个对象获取数据


有没有更好的方法从Angularjs获取全局范围变量?感谢您的帮助。

这是一个演示如何在控制器之间共享数据的插件。我在这里连接这辆车

服务是一个单例对象,您可以在其中跨控制器存储和检索数据。这通常是共享数据的首选方式

服务代码

fasterApp.service('fasterService', function($rootScope){
 var serv = {
        name: '', age: '', place: '', gender: '',
        addData: function (n, a, p, g) {
            this.name = n;
            this.age = a;
            this.place = p;
            this.gender = g;

            $rootScope.$broadcast('dataAdded');
        }
    };
    return serv;
})
添加数据是在添加数据时调用的

以下代码进入第二个控制器

$scope.$on('dataAdded', function () {
    $scope.name = fasterService.name;
    $scope.age = fasterService.age;
    $scope.place = fasterService.place;
    $scope.gender = fasterService.gender;
});

添加数据后,dataAdded事件将在第二个控制器中接收。

考虑使用服务,并将其注入要使用的任何位置。通过这种方式,您可以在组件之间共享数据。首先,您的画布javascript文件必须成为angular框架的一部分,最好的选择可能是将其转换为指令。然后,当您在控制器作用域下使用指令时,它可以访问所有控制器公开的变量。