angularjs从父级更改ng-repeat嵌套值

时间:2015-08-02 03:32:06

标签: javascript angularjs ng-repeat

当我从“笔”或“拖”更改数字时,我想更改嵌套ng-repeat中的“taskAssembly.qnt”值

看到这个plunker。 http://plnkr.co/edit/rKnup0IIPRYvh8JLHXbD?p=preview

查看我的数据:

 { "client": "client1","takeoff": [
{
  "taskName": "ToW",
  "taskQnt": 2300,
  "taskAssembly": [
    {
      "qnt": "",
      "product": "spray",
      "labour": 12,
      "name": "John"
    },
    {
      "qnt": "",
      "product": "strips",
      "labour": 10,
      "name": "John"
    }
  ]
}

我希望当我改变takeOff.taskQnt中的ng-repeat中的taskAssembly.qnt来改变

此功能不起作用。

$scope.adjustTaskQnt = function (items) {

var test = 0;
for (var i in items) {
  items[i].qnt == $scope.takeOff.taskQnt
   }

return $scope.taskAssembly.qnt;

};

任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:0)

尝试按如下方式修改adjustTaksQnt函数和模板。

$scope.adjustTaskQnt = function($index) {
   angular.forEach($scope.estimate.takeoff[$index].taskAssembly, function(value, key) {
      value.qnt = $scope.estimate.takeoff[$index].taskQnt;
   });
};

HTML模板

<input type="text" class="qnt" ng-model="takeOff.taskQnt" ng-change="adjustTaskQnt( $index )">

答案 1 :(得分:0)

这也可以,只需修改你的功能

$scope.adjustTaskQnt = function (items) {
    //  var test = 0;
    //for (var i in items) {
    // items[i].qnt == $scope.takeOff.taskQnt;
    //}
    for(i=0;i<items.length;i++){

        if(items[i].taskName=="ToW"){
            for(j=0;j<items[i].taskAssembly.length;j++){
                items[i].taskAssembly[j].qnt=items[i].taskQnt;
            }
        }
        else if(items[i].taskName=="Pens"){
            for(j=0;j<items[i].taskAssembly.length;j++){
                items[i].taskAssembly[j].qnt=items[i].taskQnt;
            }
        }
    }
    return $scope.taskAssembly.qnt;
  };