ng-repeatにネストされたng-optionで選択すると、iOSで選択リストの動作がおかしくなります。初めて[追加]をクリックしてリストからアイテムを選択すると、オプションリストが閉じた後に表示されるアイテムは、選択したアイテムの下のアイテムになります。横の必須フィールドをチェックするか、オプションリストを再度開くと、表示されている項目が修正されます。これはデスクトップブラウザで機能します。問題を確認するにはiOSデバイスを使用する必要があります。
<div ng-app>
<div ng-controller="TemplateDetailCtrl">
<button ng-click="addObs()">add</button>
<br/>
<span ng-repeat="obs in template.observations">
<select ng-model="template.observations[$index].observation.id" ng-options="obsOption.id as obsOption.name for obsOption in options | orderBy:'name'">
</select>
<input type="checkbox" ng-model="template.observations[$index].required"/>Required
<button class='btn' ng-click="removeObs($index)">Remove</button>
<br/>
</span>
</div>
</div>
function TemplateDetailCtrl($scope) {
$scope.message = 'Not Ready';
$scope.options = [{id: 1,name: 'Opt1'},{id: 2,name: 'Opt2'},{id: 3,name: 'Opt3'},{id: 4,name: 'Opt4'},
{id: 5,name: 'Opt5'},{id: 6, name: 'Opt6'},{id: 7,name: 'Opt7'},{id: 8,name: 'Opt8'},{id: 9, name: 'Opt9'}];
$scope.template = {};
$scope.addObs = function() {
$scope.message = 'changed...';
if (!$scope.template.observations) {
$scope.template.observations = [];
}
$scope.template.observations.push({
observation: {},
required: 'false'
});
};
$scope.removeObs = function(idx) {
var observations = $scope.template.observations;
observations.splice(idx, 1);
};
}