Невозможно прочитать значение таблицы td из HTML с помощью селектора jQuery - PullRequest
0 голосов
/ 15 сентября 2018

Для создания таблицы я использую ng-repeat для рендеринга строки таблицы. Изменение выпадающего списка Я вызываю функцию, которая будет работать, имеет некоторые условия на основе этого условия. Я помещаю объект в массив, который привязывается к переменной области.

Мой HTML

<div class="col-md-12" >

    <div class="portlet light" >
      <div class="portlet-title">
        <div class="caption">Installment Structure </div>
      </div>

      <div class="portlet-body">
        <div class="row">
          <div class="col-md-12">
            <table id="instalmentStructure" class="table table-bordered">
              <tbody>
                <tr>
                  <th style="width:20%;">From Installment
                  </th>
                  <th style="width:20%;">To Installment</th>

                  <th  style="width:20%;">Installment Amount
                  </th>

                  <th style="width:20%;"></th>
                </tr>
                <tr class="quoteVal" ng-repeat="item in installmentLists">
                  <td >{{item.fromInst}}</td>
                  <td >{{item.toInst}}</td>

                  <td contenteditable="true" class="quoteVal">{{item.amtInst}}</td>

                  <td>
                    <span class="col-md-6">
                      <center>
                        <a ng-click="editRecord(item,$index)">
                          <i class="fa fa-pencil"></i>
                        </a>
                      </center>
                    </span>
                    <span class="col-md-6">
                      <center>
                        <a ng-click="deleteRecord(item,$index)">
                          <i class="fa fa-trash"></i>
                        </a>
                      </center>
                    </span>
                  </td>
                </tr>
              </tbody>
            </table>
          </div>
        </div>
      </div>
    </div>


  </div>

Код моего контроллера:

$scope.createInstallments = function () {
    console.log("will create installments");
    if (trialCalculCntrl.emiCalQde.bulletFreq == 12) {
        console.log("Bullet Frequency is Yearly");
        var bulletFreq = trialCalculCntrl.emiCalQde.bulletFreq;
        $scope.installmentLists = [];
        $scope.installmentObj = {
            'fromInst': "",
            'toInst': "",
            'amtInst': ""
        };
        var remainder = tenure % 12;
        if (remainder == 0) {
            var numofrows = ((tenure * 2) / 12).toFixed(0);
            for (var i = 1; i <= numofrows; i++) {

                if (i == 1) {
                    $scope.installmentObj = {
                        'fromInst': i,
                        'toInst': bulletFreq - 1,
                        'amtInst': ""
                    };
                    $scope.installmentLists.push($scope.installmentObj);
                } else if (i % 2 == 0) {

                    console.log("EVEN i: ", i);
                    var preval = $('tr.quoteVal').eq(i - 2).find('td:eq(1)').text();
                    console.log("Previous Val ", preval);

                } else {
                    console.log("ODD i: ", i);
                    // var preval = $('tr.quoteVal').eq(i-1).find('td:eq(2)').text();
                    // console.log("Previous Val ",preval);
                }
            }
            console.log("Instalment list : ", $scope.installmentLists);
        } else {
            var numofrows = (((tenure * 2) / 12) + 1).toFixed(0);
            for (var i = 0; i < numofrows; i++) {
                $scope.installmentObj = {
                    'fromInst': "",
                    'toInst': "",
                    'amtInst': ""
                };
                $scope.installmentLists.push($scope.installmentObj);
            }
            console.log("Instalment list : ", $scope.installmentLists);
        }



    }
};

Внутри цикла for после первого запуска я помещаю объект в массив $ scope.installmentLists, но он не отображается в HTML, поэтому я не могу прочитать объект массива во втором цикле цикла for. Я использую селекторы jQuery для чтения, поэтому console.log("Previous Val ", preval); дает мне пустую строку.

1 Ответ

0 голосов
/ 17 сентября 2018

Поместите свой jquery около console.log в setTimeout при изменении $scope. В противном случае селектор jquery не возвращает ожидаемого, потому что HTML не был обработан.

setTimeout(function() {
  onsole.log("EVEN i: ", i);
  var preval = $('tr.quoteVal').eq(i - 2).find('td:eq(1)').text();
  console.log("Previous Val ", preval);
}, 500);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...