2017-04-11 127 views
0

这里是我的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操作的另一个正常的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; 

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

+0

这取决于DOM是否已经创建或不前你查询它。在你的情况下,它似乎不是 – ABOS

+2

在Angular中,如果你想在整个应用程序中共享变量,那么最好将它保存在Angular服务或工厂中,并在需要的地方使用它 – CrazyMac

+0

你试过这个解决方案堆栈http: //stackoverflow.com/questions/17960622/pass-angular-scope-variable-to-javascript/#answer-17963609 – k185

回答

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之前运行在你的电流控制器完成完全

1

savethe价值$像rootscope这$ rootscope.users = data; 使用$ rootscope.requiredValue = $ rootscope.users;在其他角度js页面。

0

尝试使用这样的:

声明JavaScript函数如下

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

调用这个函数在成功回调

window.sample(data)