2016-09-16 17 views
0

私はangularjsを初めて使いました。私は別の関数から関数のスコープ変数にアクセスするのに問題があります。別の関数から関数のスコープ変数にアクセスする

第一機能

$scope.getCustomer = function (customer_id) { 


         ABCServices.wts.customer.customerList({customerId:customer_id}).then(function (data) { 

          console.log("^^^^^ABC show^^^^^"); 
          $scope.wtsdata = data; 

          console.log($scope.wtsdata); 

         }); 

        }; 

だからここに私は私の第二の機能で$scope.wtsdataにアクセスしたいです。私はそれにアクセスしようとすると、私に未定義のエラーが発生します。これを行うには?

第二の機能

$scope.selectCustomer = function (item) { 

        $scope.item = item; 


        if (item.length === 8) { 

         $scope.getCustomer(item); 


         console.log("Check"+$scope.wtsdata); 

        } 

       }; 
+0

両方の機能が同じコントローラ内にあるか、または異なっていますか? – Rakeschand

+0

@Rakeschand同じコントローラ –

答えて

1

次の2つの方法

(I)でそれを行うことができれば、この場合に$rootScopeを使用

(ii)が外部に$スコープ変数を宣言します両方の機能に同じコントローラ私はあなたの問題のためのサンプルfiddleをした

ABCServices.wts.customer.customerList({customerId:customer_id}).then(function (data) { 
      console.log("^^^^^ABC show^^^^^"); 
      $rootScope.wtsdata = data;   
}); 

$scope.selectCustomer = function (item) { 
    $scope.item = item; 
    if (item.length === 8) { 
    $scope.getCustomer(item); 
    console.log("Check"+$rootScope.wtsdata); 
    } 
}; 
+0

スコープデータを共有するために$ rootscopeを使用することは、一般的に悪い習慣とみなされます。 – Amygdaloideum

+0

@DanielBornstrand私はすべてのシナリオを説明しましたが、このコンテキストで$ rootscopeを使用するのは悪い習慣ではありません – Sajeetharan

+0

まだ定義されていないエラーが発生しました –

0

、あなたはコントローラ間で変数を共有するServicesを利用することができますtherwise、私はこれはあなたのissue.Belowサンプルコード

angular.module('MainApp', []) 
    .controller('Ctrl', function($scope, $timeout) { 

     $scope.wtsdata = {}; //it can be array too then [] 
     $scope.selectCustomer = function(item) { 
      $scope.item = item; 
      if (item.length === 8) { 
       $scope.getCustomer(item); 
       console.log("Check" + $scope.wtsdata); 
      } 

     }; 

     $scope.getCustomer = function(customer_id) { 

      $scope.wtsdata = 'Data fetched from service'; 
      /*ABCServices.wts.customer.customerList({ 
       customerId: customer_id 
      }).then(function(data) { 

       console.log("^^^^^ABC show^^^^^"); 
       $scope.wtsdata = data; 

       console.log($scope.wtsdata); 

      });*/ 

     }; 
    }); 
で解決を願っています