angularjs меняет вложенное значение ng-repeat от родительского

0

Я хочу изменить значение "taskAssembly.qnt" во вложенном ng-повторе, когда я меняю номер на "ручки" или "Буксировка",

см. этот плункер. 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 taskAssembly.qnt в ng-repeat, чтобы изменить

Эта функция не работает.

$scope.adjustTaskQnt = function (items) {

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

return $scope.taskAssembly.qnt;

};

любая идея, как это можно сделать?

  • 0
    Вы хотите одно и то же значение taskQnt для всех taskAssembly.qnt в соответствии с ToW и ручками
  • 0
    да. идея состоит в том, чтобы изменить qnt в «ручках» (или «буксировке») и изменить каждый из вложенных рядов
Показать ещё 2 комментария
Теги:
ng-repeat

2 ответа

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 )">
  • 0
    этот работал. благодарю вас.
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;
  };
  • 1
    это потребует от вас наличия условия для каждого taskName, которое было бы невозможно для больших наборов данных
  • 0
    @ sparticus_37 спасибо за ваше предложение, я не знал об этом :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню