使用ng-change功能在ng-repeat中设置ng-model

时间:2018-02-20 00:36:39

标签: javascript angularjs angularjs-ng-repeat angularjs-ng-model angularjs-ng-change

如何在ng-repeat中的ng-model中设置结果?

包含ng-repeat的示例:

<tbody ng-repeat="(key,boleta) in boletas track by $index">
  <tr>
  <td>
    <label for="">NUMBER </label>              
    <select name='bills[{{key}}][number]' class="form-control" 
      ng-change='changeBoletas()' ng-model='model.numberBoleta'>
      <option ng-repeat="(number, x) in model.boletas">{{number}}</option>
    </select>    
  </td>
  <td>
    <label for="">Comisión </label>
    <input name='bills[{{key}}][runt]' type="number" 
      class="form-control comision-{{key}}" 
      ng-model='boleta[$index].comision' 
      ng-change='dataBoleta()'>                
    <td>
      <div ng-show='true' ng-if="status=='applied'" 
        data-ng-click="removeItemBoletas($index)">
        <i class="fa fa-times color3"></i>
      </div>     
    </td>          
  </tr>
</tbody>

JS:

$scope.changeBoletas = function() {
    $scope.boleta=[];
    $scope.boleta[0].comision=123; 
}

发生的错误是:

  

TypeError:无法设置undefined

的属性'comision'

https://jsfiddle.net/05er7rk5/18/

我希望每次你选择选择mimes自动完成ng-model的选项。

3 个答案:

答案 0 :(得分:0)

当您尝试访问没有值的predictions时,发生了错误。在代码$scope.boleta[0]中,我创建并添加了一个元素。 现在,如果您访问$scope.boleta.push({comision:123}),则错误将消失。

请使用如下代码:

$scope.boleta[0].comision = 123;

答案 1 :(得分:0)

  

TypeError:无法设置undefined

的属性'comision'

因为$scope.boleta被声明为空数组[]。因此,数组中不存在具有comision属性的对象。

如果您尝试将对象访问到数组中,可以执行以下操作

var boleta = [];
boleta[0] = { comision: 123 };

console.log(boleta);

答案 2 :(得分:0)

错误已经解决了。问题是由于NG-REPEAT内部的NG模型的声明。在这种情况下,应该调用NG REPEAT的模型,以便它可以识别它,最重要的是,它不会出现未定义的

<tbody ng-repeat="(key,boleta) in boletas track by $index">

$scope.changeBoletas = function(varDato) {
      $scope.boletas[varDato].comision=123; 
  }

https://jsfiddle.net/awilchesl/fwp5rfvp/12/

相关问题