通过URL中的参数 - AngularJS在控制器之间传递数据

时间:2014-08-23 11:16:21

标签: angularjs

所以,我现在正在构建一个Angular Web应用程序,现在我正试图了解构建路径和视图的基础知识。

在我的DashboardCtrl中,我有我的spartaCustomers数组,我存储了一些有关我的客户端的信息。

在我的仪表板视图中,我构建了一个基本表并吐出了信息。如您所见,我将每行中的客户端链接到新的/客户端页面,并将ID传递给URL。

我需要帮助

在下面的ClientCtrl中,我想从DashboardCtrl中获取数组中的客户端对象,以便我可以在/ client视图中使用它。我成功地从URL中获取了客户端ID,但还没有想出如何查找"查找"来自第一个控制器的客户信息。

任何帮助将不胜感激!

我的代码:

<table class="table">
    <th>Client id</th>
    <th>Name</th>
    <th>Current Contract Length</th>
    <th>Current Contract Value</th>
    <th>Start Date</th>
    <th>End Date</th>
    <th>Next Renewal Date</th>
    <th>MRR</th>

    <tr ng-repeat="c in spartaCustomers">
        <td>{{c.id}}</td>
        <td><a href="/#/client/{{c.id}}">{{c.name}}</a></td>
        <td>{{c.currentContractLength}}</td>
        <td>{{c.currentContractValue}}</td>
        <td>{{c.startDate}}</td>
        <td>{{c.endDate}}</td>
        <td>{{c.nextRenewalDate}}</td>
        <td>{{c.mrr}}</td>
    </tr>
</table>

第一个控制器:

.controller('DashboardCtrl', function ($scope) {

    $scope.spartaCustomers = [{
        id: 1,
        name: "John Inc",
        currentContractLength: 12,
        currentContractValue: 18000,
        startDate: "09/01/2014",
        endDate: "09/01/2015",
        nextRenewalDate: "09/01/2015",
        mrr: 1500

    }, {
        id: 2,
        name: "Peters Company Ltd",
        currentContractLength: 3,
        currentContractValue: 15000,
        startDate: "09/01/2014",
        endDate: "09/01/2015",
        nextRenewalDate: "09/01/2015",
        mrr: 1500
    }]

)};

我的客户&#34;控制器:

angular.module('atlantisApp')
  .controller('ClientCtrl', function ($scope, $routeParams, $filter) {
    $scope.clientId = $routeParams.clientId; //This works and fetches the id 

    //fetch the client object here for use inside this controller

  });

1 个答案:

答案 0 :(得分:1)

您可以使用服务在控制器之间共享数据。下面只是一个例子

app.factory('theService', function() {  
    return {
        customers: {}
    };
});

app.controller("DashboardCtrl", function($scope, theService) {
    theService.customers = $scope.customers;
});

app.controller("ClientCtrl", function($scope, theService) { 
    $scope.customers = theService.customers; 
});

或者您可以从服务器获取每个客户ID的数据,这将使控制器彼此独立。