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

时间:2014-07-21 11:57:19

标签: javascript angularjs angularjs-scope

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

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

我知道您可以访问这样的控制器方法:

var scope = angular.element($('#Controller')).scope();
scope.$apply(function(){
      scope.getFunc();           
});

但是每当我尝试访问一个全局范围变量时,它会在这个名为[remove:function]的对象中返回,我不知道如何从这个对象获取数据。

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

1 个答案:

答案 0 :(得分:1)

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

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

http://plnkr.co/edit/bsFxDn3RQCGlmZLJMAil?p=preview

服务代码

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事件。