当table
为select
时,有没有办法重新填充我的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
};
}]);
答案 0 :(得分:0)
在联赛选择列表中添加ng-change
,即:
ng-change="getFixtures(data.selectedOption)"
您必须在leagueController
中移动服务电话:
<强> leagueController:强>
$scope.getFixtures = function (league) {
// set $scope.fixtures
};
由于 tableController
是leagueController
的孩子,灯具会被继承。如果tableController
内没有其他逻辑,请考虑将其删除。
编辑:
没有注意到tableController
不是孩子而是兄弟姐妹。让控制器负责下拉列表和表格是有意义的,即将leagueController
移动一级,但如果您的问题是如何通知兄弟控制器,您可以通过从一个事件发出一个事件来做到这一点。父scope
,通常来自rootScope
。