【问题标题】:Setting ng-model within ng-repeat using ng-change function使用 ng-change 函数在 ng-repeat 中设置 ng-model
【发布时间】:2018-02-22 18:06:32
【问题描述】:

如何在 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: Can not set property 'comision' of undefined

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

我希望每次您选择选择 mimes 的选项时都会自动完成 ng-model。

【问题讨论】:

  • 你试过$scope.boleta[0] = { comision: 123 }吗?因为boleta 数组仍然是空的,并且您在索引0 处调用它的值,这显然会给您undefined
  • 未定义的不再输出但ng-model没有完成
  • 什么意思?你能为此提供一个代码sn-p吗?

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


【解决方案1】:

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

请使用如下代码:

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

【讨论】:

    【解决方案2】:

    TypeError: Can not set property 'comision' of undefined

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

    如果您尝试将对象访问到数组中,您可以这样做 :

    var boleta = [];
    boleta[0] = { comision: 123 };
    
    console.log(boleta);

    【讨论】:

    • 但是我无法使我执行的结果可以在输入的ng-model中可视化。
    【解决方案3】:

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

    <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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 2013-06-06
      • 2017-09-08
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多