当select更改时,尝试重新填充表

时间:2015-10-24 12:19:56

标签: angularjs

tableselect时,有没有办法重新填充我的changed

我不确定这两个controllers是如何/可以互动的,即使它们都生活在同一个ng-app下。

<div class="inner" ng-app="fixturesApp">
    <h1 class="center">Upcoming matches</h1>

    <div ng-controller="leagueController">
        <form>
            <label>Choose league:</label>
            <select id="mySelect" ng-options="option.name for option in data.availableOptions track by option.id" ng-model="data.selectedOption"></select>
        </form>
    </div>
    <div class="row">
        <div ng-controller="tableController">
            <table class="table">
                <thead>
                    <tr>
                        <th>Home</th>
                        <th>Away</th>
                    </tr>
                </thead>
                <tbody>
                    <tr ng-repeat="fixture in fixtures">
                        <td ng-cloak>{{ fixture.homeTeam.name }}</td>
                        <td ng-cloak>{{ fixture.awayTeam.name }}</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>

这是我的逻辑。其中使用4 options填充选择并设置默认值..

var app = angular.module('fixturesApp', []);

app.controller('tableController', function ($scope, $http) {
    $http.get("/fixtures?league=premier").success(function (response) {
        $scope.fixtures = response;
    });
});

app.controller('leagueController', ['$scope', function($scope) {
  $scope.data = {
    availableOptions: [
      {id: '1', name: 'premier'},
      {id: '2', name: 'championship'},
      {id: '3', name: 'league1'},
      {id: '4', name: 'league2'}
    ],
    selectedOption: {id: '1', name: 'premier'} //This sets the default value to premiership
  };
}]);

1 个答案:

答案 0 :(得分:0)

在联赛选择列表中添加ng-change,即:

ng-change="getFixtures(data.selectedOption)" 

您必须在leagueController中移动服务电话:

<强> leagueController:

$scope.getFixtures = function (league) {
    // set $scope.fixtures
};

由于tableControllerleagueController的孩子,灯具会被继承。如果tableController内没有其他逻辑,请考虑将其删除。

编辑: 没有注意到tableController不是孩子而是兄弟姐妹。让控制器负责下拉列表和表格是有意义的,即将leagueController移动一级,但如果您的问题是如何通知兄弟控制器,您可以通过从一个事件发出一个事件来做到这一点。父scope,通常来自rootScope