【问题标题】:How can I access field in ng-repeat in a dynamic way?如何以动态方式访问 ng-repeat 中的字段?
【发布时间】:2014-02-18 07:01:41
【问题描述】:

我需要在 ng-repeat 中详细说明一些函数,但我无法使用 $watch 函数访问正确的字段。

这是我的代码,但是我以错误的方式访问该字段,导致我未定义的 Javascript 错误。

.html

<body ng-controller="MainCtrl">    
<div ng-form="mainForm">
<a ng-click="addNewr1()">Add New r1</a>
<ul>
  <li ng-repeat="rb_r1 in currForm.r1" ng-form="subFormr1">
   <input type="number" step="0.1" ng-model="rb_r1.runo" name="r_runo" required />
   <input type="number" step="0.1" ng-model="rb_r1.rdue" name="r_rdue" required />
   <input type="number" step="0.1" ng-model="rb_r1.rsomma"/>
  </li>
</ul>
</div>
</body>

.js

var app = angular.module('angularjs-starter', []);
app.controller('MainCtrl', function ($scope) {
  $scope.master = {};
  $scope.currForm.r1 = [];

  $scope.addNewr1 = function (){
    $scope.currForm.r1.push({ runo: 0,rdue: 0,rsomma: 0 });};
  $scope.$watch('rb_r1.runo + rb_r1.rdue', function (value) {
    $scope.rb_r1.rsomma= value;
  }, true);
 });

所以我找到了一个小提琴并对其进行了修改,我得到了解决方案,但是以有限的方式,因为我必须以静态方式访问该字段。我怎样才能以一种动态的方式做到这一点?

http://jsfiddle.net/fe9ws/

全部!

【问题讨论】:

  • 动态是什么意思?
  • 如果你看到我的小提琴,我会使用索引访问 ng-repeat 中的字段($scope.$watch('formData.socials[0].uno + formData.socials[0].due', function(value){ $scope.formData.socials[0].somma = value});),但我希望只有一个 $watch 函数来处理所有出现的 ng-重复,动态生成

标签: javascript angularjs scope watch formulas


【解决方案1】:

我用 $watch 函数中的 for 解决了..

$scope.$watch('formData.socials',
              function(value){
                  var i;
                  for(i = 0; i < value.length; i++)
                      value[i].somma = value[i].uno + value[i].due;
              }, true);   

看小提琴!都来了

http://jsfiddle.net/JWTE2/

【讨论】:

    【解决方案2】:

    我仍然不清楚你试图做什么,但你不需要$watch 来完成所描述的任务:

    由于“somma”是计算出来的,您可以像这样定义您的字段,它将产生期望的结果:

     <input type="number" name="somma" value="{{social.uno + social.due}}">
    

    【讨论】:

    • 解释起来有点复杂,但我用循环解决了它。请参阅我的答案。无论如何都是TY
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    相关资源
    最近更新 更多