Выполните ng-repeat один раз - PullRequest
0 голосов
/ 12 апреля 2019

Моя проблема должна быть довольно простой.

Если в vm.application.obligations объекте у меня нет holderId == 2, я просто хочу вставить пустую строку

Но мой кодвставляет одну пустую строку для каждой vm.application.obligations.

Как вставить только одну пустую строку?

<tr class="text-center" ng-if="obligation.debtor.holderId != 2"
    ng-repeat="obligation in vm.application.obligations track by $index">
  <td>-</td>
  <td>-</td>
  <td>-</td>
  <td>-</td>
</tr>

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Если в vm.application.obligations объекте у меня нет holderId == 2, я просто хочу вставить пустую строку

<tr class="text-center" ng-if="vm.noHolderIdEq2()"
    ̶n̶g̶-̶r̶e̶p̶e̶a̶t̶=̶"̶o̶b̶l̶i̶g̶a̶t̶i̶o̶n̶ ̶i̶n̶ ̶v̶m̶.̶a̶p̶p̶l̶i̶c̶a̶t̶i̶o̶n̶.̶o̶b̶l̶i̶g̶a̶t̶i̶o̶n̶s̶ ̶t̶r̶a̶c̶k̶ ̶b̶y̶ ̶$̶i̶n̶d̶e̶x̶"̶ >
  <td>-</td>
  <td>-</td>
  <td>-</td>
  <td>-</td>
</tr>
vm.noHolderIdEq2 = function() {
    var arr = vm.application.obligations.filter(x => x.holderId == 2);
    return arr.length == 0;
};
0 голосов
/ 14 апреля 2019

было бы неплохо перевести логику в javascript и позволить html отображать данные без необходимости условий. например. JS:

vm.uiData = [];                
obligations.forEach(function (obligation) {
                    if (obligation.debtor.holderId === 2) {
                        vm.uiData.push("");
                    } else {
                        //  push to uiData what should be displayed in the normal behavior..
                }
            });

HTML:

<tr class="text-center" ng-repeat="text in vm.uiData track by $index">
  <td>{{text}}</td>
</tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...