如何将值传递给其他控制器?

时间:2017-08-31 12:02:21

标签: javascript angularjs

我认为这些信息不足以完全理解,但我只是在这方面的一些方向。或者如果你愿意,我可以在floobit中与你分享完整的代码

我正在尝试将API中的数组放入卖家数组中。

    this.fetchSellers = function () {
        var date = new Date().toISOString();
        $http.get('/api/sellers', {params: {auctionDate: date}})
            .success(function (sellers) {
                sellers && sellers.length && ($scope.sellers = sellers);
            });
    };

我正在尝试将值 Seller.symbol 中的一个放入下面的数组列表中。  enter image description here

$scope.sellers = []

它可以加载到ng-option中,如

<select class="form-control" ng-model="auction.seller" ng-options="o.id as o.symbol for o in sellers" required></select>

enter image description here

问题是,我无法将值传递到表格中的另一个控制器。
enter image description here

HTML代码

   <tbody class="auction-group" ng-repeat="a in auctions">
    <tr>
        @*auction *@
    <td>{{ acv('auctionDate', a) }}</td>
        @*seller*@
    <td>{{ a.seller }}</td>

ng代码

 this.tableComplexFieldDict = {

        auctionDate: {
            label: 'Auction',
            cacheKey: 'auctionDate',
            getCacheValue: function (a) {
                return moment(a.startAt).format('MM/DD/YY');
            }
        },

        facility: {
            label: 'Facility',
            cacheKey: 'facility',
            getCacheValue: _.property('contract.facility')
        },

        seller: {
            label: 'Seller',
            cacheKey: 'seller',
            getCacheValue: function (a) {
                return a.seller;
            }
        },

2 个答案:

答案 0 :(得分:1)

为了做到这一点,你必须使用其他服务。理想情况下,您可以在控制器之间传递数据,反之亦然。所以只需创建另一个服务并将其包含在您想要传输数据的控制器中。

这里是example

&#13;
&#13;
// declare the app with no dependencies
var myApp = angular.module('myApp', []);


myApp.factory('Data', function(){
    return { FirstName: '' };
});

myApp.controller('one', function( $scope, Data ){
	$scope.Data = Data;
});

myApp.controller('two', function( $scope, Data ){
	$scope.Data = Data;
});
&#13;
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
<script src="https://rawgit.com/angular/bower-angular/master/angular.min.js"></script>
  
</head>
<body>
<div ng-app="myApp">
  <h3>write something in text box it will be printed by both controller</h3>
		<div ng-controller="one">
			<input type="text" ng-model="Data.FirstName"><!-- Input entered here -->
			<br>Controller 1 : <strong>{{Data.FirstName}}</strong><!-- Successfully updates here -->
		</div>
		<hr>
		<div ng-controller="two">
			Controller 2: {{Data.FirstName}}<!-- How do I automatically updated it here? -->
		</div>

	</div>
</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

可以通过3种方式在控制器之间传递数据:

  • 两个控制器使用的共享服务与set get data functions

  • 使用通过根作用域的直接数据绑定作为媒介来存储来自

  • 的读取数据

(根本范围的可怕滥用)

  • 通过活动

对我来说,最佳做法是使用商店和阅读服务;)