繁体   English   中英

在角度的几个选项中动态默认选择的项目

[英]default selected items dynamically in several options in angular

我在这里看到示例https://docs.angularjs.org/api/ng/directive/select ,它具有3个具有相同值的选择,如何在选项中选择不同的值?

我有这个:

    <li ng-repeat="tarea in tareas">
      <input type="checkbox" ng-model="tarea.COMPLETADA" ng-change="updTarea(tarea.ID)"/>
      <span class="done-{{tarea.COMPLETADA}}" >{{tarea.NAME}} {{tarea.CLASIFICADORES}}</span>
      <select ng-model="selectedOpt" 
      ng-options="clasificador.NAME for clasificador in clasificadores">
      </select>
      <button class="buttons delete right" ng-click="delTarea(tarea.ID)"> Eliminar</button>
    </li>

所以我可以有5,10,15个选项,并且我想用tarea.CLASIFICADORES中的值制作一个选定的项目,我尝试过

$scope.selectedOpt = $scope.clasificadores[1]

但这会使所有选项具有相同的值,例如在示例中...

如何使用每个项目的ng-repeat中的值动态地在选项中选择不同的所选项目?

我用ajax加载数据...

我的问题是使用tarea.CLASIFICADORES设置默认的选定项目。 例如,我有一个带有分类器的待办事项列表,我希望我的ng-options在页面加载时默认选择我的数据库值分类器

问题是,所有选择都使用相同的作用域变量。 您也可以将所选选项存储在数组中,如下所示:

 function TestCtrl($scope) { $scope.items = [ { id: 1, class: 1 }, { id: 2, class: 2 }, { id: 3, class: 1 }, ]; $scope.classes = [ { name: "class 1", id: 1}, { name: "class 2", id: 2}, { name: "class 3", id: 3} ]; }; 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app> <div ng-controller="TestCtrl"> <div ng-repeat="currentItem in items"> <select ng-model="selectedClass[$index]" ng-init="selectedClass[$index]=(classes|filter:{id: currentItem.class})[0]" ng-options="class.name for class in classes track by class.id" > </select> selected class: {{selectedClass[$index]}} </div> </div> </div> 

在此示例中,我使用了由ng-repeat指令设置的变量$ index。 顾名思义,它包含重复循环的当前索引。

更新

我更新了代码段,以便为每个选择输入设置默认值。

现在,不同的项目包含一个具有相应类ID的字段。 我用ng-init初始化选择输入。 使用此指令,我设置了selectedClass[$index] ,它是当前项目的选定值。 由于我们仅将class-id作为项目的属性,因此我使用过滤器来查找具有id (classes|filter:{id: currentItem.class})[0]的相应类对象。

为了摆脱过滤器,您可以将每个项目的类设置为完整的类对象而不是id。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM