2017-04-11 16 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; 

動作しません。これを解決するように教えてください。以下のような$ rootscopeに完全にあなたの現在のコントローラで

+0

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

呼び出し、この関数以下のようにJavaScript関数を宣言しますあなたはそれを照会します。あなたのケースでは、それはないと思われる – ABOS

+2

角度では、あなたはアプリケーション全体で変数を共有したい場合は、角のサービスや工場でそれを維持し、必要に応じてそれを使用するより良い – CrazyMac

+0

スタックでこのソリューションを試してみましたhttp: //stackoverflow.com/questions/17960622/pass-angular-scope-variable-to-javascript/#answer-17963609 – k185

答えて

0

ことのように、window.onloadを使用してみてくださいこの$ rootscope.users = data; を使用します。$ rootscope.requiredValue = $ rootscope.users;他の角度のjsページで。

1

savethe値を確定し、多分あなたのjsコードがangular前に実行されているため

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にしようとすることができます:

0

は次のように使用してみてください:

は、それはDOMが以前に作成されているか否かに依存し、成功コールバック

window.sample(data) 
関連する問題