Angularjs 从阵列中预选的选项

Angularjs 从阵列中预选的选项,angularjs,Angularjs,我挖了几个小时也没找到我想做的事的答案。我正在处理一个包含很多变量的复杂表单,因此我将尝试在这里缩小我的请求:) 我得到了一个基于变量的变量select。所以我用ng重复如下: <tr ng-repeat="i in numberOfRows track by $index"> <td> <select list.indexOf(selected[$index]) as item for item in list></select>

我挖了几个小时也没找到我想做的事的答案。我正在处理一个包含很多变量的复杂表单,因此我将尝试在这里缩小我的请求:)

我得到了一个基于变量的变量select。所以我用ng重复如下:

<tr ng-repeat="i in numberOfRows track by $index">
  <td>
    <select list.indexOf(selected[$index]) as item for item in list></select>
  </td>
</tr>
<tr><td>
  <select>
    <option label="opt0" value="opt0"></option>
    <option label="opt1" value="opt1" selected="selected"></option>
    //opt2 removed because it's selected in another select
  </select>
</tr></td>
  <tr><td>
  <select>
    <option label="opt0" value="opt0"></option>
    //opt1 removed because it's selected in the previous select
    <option label="opt2" value="opt2" selected="selected"></option>
  </select>
</tr></td>

结果应该是这样的

<tr><td>
  <select>
    <option label="opt0" value="opt0"></option>
    <option label="opt1" value="opt1" selected="selected"></option>
    <option label="opt2" value="opt2"></option>
  </select>
</tr></td>
  <tr><td>
  <select>
    <option label="opt0" value="opt0"></option>
    <option label="opt1" value="opt1"></option>
    <option label="opt2" value="opt2" selected="selected"></option>
  </select>
</tr></td>

我尝试了很多方法来编写我的ng选项。 我实际拥有的是正确数量的select,每个select中都有一个列表,但是每个select都应该有一个不同的预选变量。它们都在我列表的最后一个值上被选中。不管我怎么努力

ps:我的数组“选定”中的值始终在列表[$index]中。名称

如果有人知道如何做到这一点,我会非常高兴^^

小侧请求:是否可以在列表上进行筛选,通过所有选择删除/隐藏所选选项? 结果如下:

<tr ng-repeat="i in numberOfRows track by $index">
  <td>
    <select list.indexOf(selected[$index]) as item for item in list></select>
  </td>
</tr>
<tr><td>
  <select>
    <option label="opt0" value="opt0"></option>
    <option label="opt1" value="opt1" selected="selected"></option>
    //opt2 removed because it's selected in another select
  </select>
</tr></td>
  <tr><td>
  <select>
    <option label="opt0" value="opt0"></option>
    //opt1 removed because it's selected in the previous select
    <option label="opt2" value="opt2" selected="selected"></option>
  </select>
</tr></td>

//opt2已删除,因为它是在另一个select中选择的
//opt1已删除,因为它是在上一个选择中选择的

谢谢:)

我在第一部分尝试了您现有的解决方案,但我不知道您是如何使这一行代码正常工作的:

<tr ng-repeat="i in numberOfRows track by $index">
您可以:

<tr ng-repeat="i in selected">
  <td>
    <select ng-model="selectModels[$index]" ng-options="option.name for option in list track by option.id" class="form-control"></select>
    {{ selectModels[$index] }}
  </td>
</tr>

{{selectModels[$index]}
如果您为每行生成不同的
列表
,或者对该行使用
禁用选项
,我认为您的附带问题是可能的


这里是工作希望这有帮助。您可以根据自己的请求设置一个新问题。

我在第一部分尝试了您现有的解决方案,但我不知道您是如何使这一行代码正常工作的:

<tr ng-repeat="i in numberOfRows track by $index">
您可以:

<tr ng-repeat="i in selected">
  <td>
    <select ng-model="selectModels[$index]" ng-options="option.name for option in list track by option.id" class="form-control"></select>
    {{ selectModels[$index] }}
  </td>
</tr>

{{selectModels[$index]}
如果您为每行生成不同的
列表
,或者对该行使用
禁用选项
,我认为您的附带问题是可能的


这里是工作希望这有帮助。你可以为你的附带请求设置一个新问题。

可能是一个输入错误,但你在第一个问题中选择的
之前缺少一个空格
value=“opt1”selected=“selected”
只需在我的请求中键入。我的变量是很长的名称。可能是输入错误,但您在第一个变量中选择的
之前缺少一个空格
value=“opt1”selected=“selected”
只需在我的请求中键入。我的变量是很长的名称。不错,但为什么我们不能在任何选择中选择opt0?我是否必须只使用$scope?因为我的控制器头是这样的。控制器('MyCtrl',函数($scope){var vm=this;});抱歉,我做了一个快速修复,小提琴如果现在工作,只是添加了一些变量并更改了ng选项值。不错,但是为什么我们不能在小提琴中的任何选择中选择opt0?我是否必须只使用$scope?因为我的控制器头是这样的。控制器('MyCtrl',函数($scope){var vm=this;});对不起,我做了一个快速修复,小提琴如果现在工作,只是添加了几个变量和改变ng选项值。