【问题标题】:AngularJs ng-options repeat into repeatAngularJs ng-options 重复成重复
【发布时间】:2019-03-07 16:54:39
【问题描述】:

有代码:

<tr data-ng-repeat="item in data.items">
     <td>{{item.Id}}</td>
     <td>
         <div>
             {{ data.items[$index].selectedBusinessType.id }}
             {{ data.items[$index].businessTypes[$index].id }}
             <select ng-options="businessType.name for businessType 
                     in item.businessTypes track by businessType.id"
                     data-ng-model="item.businessTypes.id == item.selectedBusinessType.id">
             </select>
         </div>
     </td>
 </tr>

在 div 模型中结果还可以,但下拉菜单仍然不起作用

无价值屏幕的下拉菜单

范围数据从后面

我能解决我做错了什么吗?

【问题讨论】:

  • 你想在selectng-model 中存储什么? data-ng-model="item.businessTypes.id == item.selectedBusinessType.id" 是一个表达式,它将是 true/false
  • 您能在此处或stackblitz 上提供一些您的问题的sn-p 吗?
  • 我将尝试从 businessTypes 列表中获取值,其中 businessTypes.id 与 selectedBusinessType.id 中的值相等。比如:如果businessType.id == 1,返回下拉列表中的第一个元素,等等

标签: angularjs angularjs-directive


【解决方案1】:

您可能需要过滤器。尝试类似:(plunker:https://next.plnkr.co/edit/DiInzWMC2k8WZzuH

<select class="form-control" ng-model="$scope.data.items[0].selectedBusinessType.id" ng-options="businessType.name for businessType in item.businessTypes | filter:doFilter(item.selectedBusinessType)">
            </select>

在控制器中:

  $scope.doFilter  = function(id) {
    console.log("selectedId:" + Object.values(id))
    return function(value, index, array) {
      console.log(value.id)
      if(value.id == Object.values(id))
        return true;
    }
  };

https://stackoverflow.com/a/39635805/4952634中的答案相关

【讨论】:

    【解决方案2】:

    在 angularJs 1.5 版的工作选项是这样的: Plunk - Use angularJs 1.5x

      <select class="form-control" ng-model="data.items[$index].selectedBusinessType.id" 
              ng-disabled="item.CanChangeBusinessType" 
              ng-change="changeBusinessType(item, selectedBusinessType.id)">
              <option ng-repeat="businessType in item.businessTypes" ng-value="businessType.id">
                {{businessType.id}}
              </option>
            </select>
    

    但这不适用于 1.4+ 版本。 Plunk - Use angularJs 1.4x

       <div>
            <select class="form-control" ng-model="data.items[$index].selectedBusinessType.id" 
            ng-disabled="item.CanChangeBusinessType" 
            ng-change="changeBusinessType(item, selectedBusinessType.id)">
              <option ng-repeat="businessType in item.businessTypes" ng-value="businessType.id">
                {{businessType.id}}
              </option>
            </select>
          </div>
    

    第二个工作选项 - 使用 ng-option: Ng-Option using

      <select class="form-control" ng-model="item.selectedBusinessType" 
            ng-options="option.id as option.name for option in data.businessTypes"
            ng-disabled="item.CanChangeBusinessType" 
            ng-change="changeBusinessType(item, item.selectedBusinessType, '{{item.selectedBusinessType}}')">
            <option value="">-- Не указан --</option>
          </select>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多