ng-repeat
-ed テーブル行があり、その中には一対の angular がありますselect
:
<div ng-controller="midiCtrl" id="midi-ctrl">
[...]
<tr ng-repeat="plugin in plugins">
<td><strong>{{plugin.name}}</strong></td>
<td>
<select class="span1" ng-model="selectedChannel" ng-options="item.ID as item.Title for item in channels">
</td>
<td>
<select class="span2" ng-model="selectedDevice" ng-options="item.ID as item.Title for item in devices">
</td>
</tr>
[...]
</div>
コントローラーは次のとおりです。
app.controller('midiCtrl', function ($scope, pluginDisplayedWindows) {
$scope.plugins = pluginDisplayedWindows.pluginsDisplayed; // An object
$scope.channels = [
{ID: 'all', Title: 'All'},
{ID: '0', Title: '1'},
{ID: '1', Title: '2'},
{ID: '2', Title: '3'}
];
$scope.devices = [
{ID: '0', Title: 'Device A'},
{ID: '1', Title: 'Device B'},
{ID: '2', Title: 'Device C'},
{ID: '3', Title: 'Device D'},
];
});
$scope.selectedChannel
これで、selects の 1 つが選択されると、対応するオブジェクトが ng-model スコープ変数 (または$scope.selectedDevice
) に設定されることがわかりましたが、明らかに対応する ng-repeat 子スコープに設定されます。
コントローラーで子スコープにアクセスするにはどうすればよいですか? ユーザーがボタンを押したときにすべての選択を保存したいのですが、midiCtrl
コントローラーでそれを実行しようとすると、によって作成された子スコープにアクセスできませんng-repeat
。