ios - Angularjs 1.0.3 嵌套在 ng-repeat 中的选择列表显示在 iOS 上选择的错误项目

标签 ios angularjs

使用嵌套在 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);
};


}

http://jsfiddle.net/48T2n/5/

最佳答案

我猜它可能与以下 Angular 操作有关:

当列表最初显示时,Angular 会在 HTML 中添加这样的选项,

<option value="?" selected="selected"></option>

因为 $scope.template.observations[$index].observation.id 最初没有设置为有效的选项/值:

选择一个有效的选项后,该选项会神奇地消失,也许这会以某种方式让 iOS 感到困惑......

看看添加这个选项是否有帮助(它可以防止生成该特殊选项):
<select ng-model="template.observations[$index].observation.id" ng-options="obsOption.id as obsOption.name for obsOption in options | orderBy:'name'">
    <option style="display:none" value=""></option>
</select>

关于ios - Angularjs 1.0.3 嵌套在 ng-repeat 中的选择列表显示在 iOS 上选择的错误项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14167902/

相关文章:

ios - 已请求但未找到标识符为 Xcode.IDEFoundation.IDEResultKitSerializationConverter 的扩展点

javascript - Angular ng-repeat 和表单性能

javascript - 构建供 angularjs View 使用的文本值数组

iphone - 检查以编程方式生成的 ImageView 的相交

php - Base64 Over HTTP POST 丢失数据(Objective-C)

ios - Xcode Cocoapods 找不到框架头文件

angularjs - ng-if 和 ng-show/ng-hide 有什么区别

javascript - AngularJS 通过模板在组件之间进行通信(带有 promise )

javascript - 在可滚动的 ionic 内容 View 中使用 ionic 滑动框

ios - 缩放时 UIScrollView subview 居中