【问题标题】:Dynamic select options in ng-repeatng-repeat 中的动态选择选项
【发布时间】:2014-11-21 04:33:46
【问题描述】:

我希望将动态选择选项值绑定到选择下拉列表。

  <div ng-repeat="condition in conditions">

       <div class="form-group">
            <select ng-model="condition.Description" class="form-control">
                     <option value="">- Select -</option>
                     <option ng-value="{{age.Description}}" ng-repeat="age in ageConditions">{{age.Description}}</option>
            </select>

       </div>
  </div>

我喜欢

age in ageConditions

是动态的。我也试过 ng-options="dynamicOptions" 但它总是绑定到同一个列表。

我想用 ng-repeat 来实现。

   Repeat 1: 
   <select ng-model="condition.Description" class="form-control">
           <option value="">- Select -</option>
           <option ng-value="ageCondition1">ageCondition1</option>
           <option ng-value="ageCondition2">ageCondition2</option>
   </select>
   Repeat 2:
   <select ng-model="condition.Description" class="form-control">
           <option value="">- Select -</option>
           <option ng-value="yearsCondition1">yearsCondition1</option>
           <option ng-value="yearsCondition2">yearsCondition2</option>
   </select>

如图所示,我希望 select 中的选项在 ng-repeat 中是动态的。 有什么想法吗?

【问题讨论】:

  • 仍然没有得到你想要的动态...你能不能展示一些真实的数据,然后它应该如何显示,plunker
  • @harish,我希望选择中的选项是动态的,但不能让它在 ng-repeat 中工作。显示具有不同选项的两个选择块。
  • 但是有多少重复,什么时候显示哪个字段的逻辑是什么?它是否固定为 2,如果是,那么为什么 ng-repeat on select... 需要明确要求
  • @harish,不,不是 2。我以 2 为例,选项值也可以改变。
  • 那么它改变的逻辑是什么......它是基于索引的吗?

标签: javascript angularjs angularjs-directive angularjs-ng-repeat html-select


【解决方案1】:
      <select ng-model="condition.Description" class="form-control">
                 <option value="">- Select -</option>
                 <option value="getValue(age, $parent.$index)" ng-repeat="age in ageConditions">               getText(age, $parent.index)</option>
        </select>

请注意使用了 $parent.$index。 动态性质的面包车可以使用返回基于 $index 的值的函数。

       $scope.getValue = function(age, index) {
             if(index === 1) return age.Desciption else age.years;
       }


       $scope.getText = function(age, index) {
             if(index === 1) return age.Desciption else age.years;
       }

希望对你有帮助

【讨论】:

  • 但我希望 ng-repeat 中的 ageConditions 中的年龄是动态的。
  • 条件可能会根据来自数据库的内容而改变
  • 鉴于这是一个函数。逻辑在你手中。随心所欲地让它充满活力。
  • 我尝试调用 ng-repeat="myFunction()"。 Angularjs 抛出异常
  • 仔细看答案,函数写在哪里
【解决方案2】:

通过创建一个为 select 创建新范围的指令解决了这个问题。

【讨论】:

    猜你喜欢
    • 2015-06-14
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2019-07-20
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多