如何将angular $ scope变量传递给JavaScript正常变量

时间:2017-04-11 11:01:14

标签: javascript angularjs angularjs-scope

这是我的Angular $ scope.variable。

$scope.users = {
                id : '',
                fullName : '',
                email : '',
                profile_picture_url : ''
            }

            $scope.comments = {
                commentId : '',
                created_by_current_user : '',
                created_by_admin : '',
                user_has_upvote : '',
                creator : '',
                fullName : '',
                content : '',
                created : '',
                modified : '',
                upvote_count : '',
                profile_picture_url : '',
                pings : '',
                parent : '',
                uniqueId : '',
                postId : ''

            }

我只是从HTTP服务获取对象数组并存储为角度变量。这是我的角度控制器

$scope.getByPost = function(postId) {
                console.log('getpost')
                $scope.user = $cookieStore.get('currentApp');
                console.log($scope.user.uniqueId);
                $scope.getUsers();
                appService.getUserByPost($scope.user.uniqueId, postId)
                        .then(function(data) {
                            console.log("Comments" + data)
                            $scope.comments = data;
                        });
            };

            $scope.getUsers = function() {
                console.log('getpost')
                appService.fetchAllUsers().then(function(data) {
                    console.log("Users" + data)
                    $scope.users = data;
                }, function(error) {
                    console.log('Error ' + error)
                })
            };

现在我需要将这些变量传递给DOM Operation的另一个普通JavaScript文件。我确实喜欢这个。

 var dom_el = document.querySelector('[ng-controller="appController"]');
       var ng_el = angular.element(dom_el);
       var ng_el_scope = ng_el.scope();
       var commentsArray = ng_el_scope.comments;
       var usersArray = ng_el_scope.users;

不工作。请告诉我解决这个问题。

3 个答案:

答案 0 :(得分:1)

将当前控制器中的值保存到$ rootscope,如$ rootscope.users = data; 使用$ rootscope.requiredValue = $ rootscope.users;在其他角度js页面。

答案 1 :(得分:0)

尝试使用window.onload,例如:

window.onload=function(){
       var dom_el = document.querySelector('[ng-controller="appController"]');
       var ng_el = angular.element(dom_el);
       var ng_el_scope = ng_el.scope();
       var commentsArray = ng_el_scope.comments;
       var usersArray = ng_el_scope.users;
}

或者您可以尝试使用setInterval,因为您的js代码可能会在angular完全完成之前运行

答案 2 :(得分:0)

尝试使用这样:

声明JavaScript函数如下

window.sample = function(comments)
{
 // do something
}

在成功回调中调用此函数

window.sample(data)