2016-07-29 98 views
-2

我認爲這是一個非常簡單的問題,但我無法弄清楚。發送數據從一個控制器到另一個

我在angularjs文件2個控制器..

analyzer.controller('AnalyzerController',function($scope,$http) 
     { 
      $scope.builds = []; 
      $http.get('/List').success(
          function(data) { 
           $scope.builds = data.responseData; 
           }); 

      $scope.showbuild=function(item){ 
       alert(item); 
      } 

    }); 




analyzer.controller('Information',function($scope,$http) 
     { 
      $scope.cases = []; 
      $http.get('/info').success(
          function(data) { 
           $scope.cases = data.responseData; 
           }); 

       }); 

我想發項目的值在第一個控制器,第二控制器。 Item是用戶從一個html頁面框中選擇的值。

回答

0

集邦這樣

$ stateProvider

.state('page1', { 
    url: '/page1/:id/:name' 
}); 
在你的控制器

,注入像$stateParams

那麼你可以得到的數據

$scope.id=$stateParams.id; 
$scope.name=$stateParams.name; 
0

主要有兩種方式: 1)有工廠或服務,或2)廣播。

Factories or a Services都是可以注入控制器的單例。通過創建其中之一,您可以通過兩個控制器中的服務使您的數據可用。

app.service('commonService', function() { 

    var data = {}; 

    this.getData = function() { 
     return data; 
    } 

    this.setData = function (dataToSet) { 
     data = dataToSet; 
    } 

}); 

app.controller("ControllerOne", function($scope, commonService) { 
    commonService.setData({key:"value"}); 
}); 

app.controller("ControllerTwo", function($scope, commonService) { 
    $scope.data = commonService.getData(); 
}); 

或者,您可以從一個控制器的範圍廣播到另一個。這種解決方案通常需要注入根視鏡並將其廣播到正在監聽該廣播的另一個控制器。

類似:

// firing an event downwards 
$rootscope.$broadcast('myCustomEvent', { 
    someProp: 'Sending you an Object!' // send whatever you want 
}); 

// listen for the event in the relevant $scope 
$scope.$on('myCustomEvent', function (event, data) { 
    console.log(data); // 'Data to send' 
}); 

這一點,在我看來,一個混亂的解決方案,我一直使用的服務或工廠爲這樣的事情。

相關問題