Функция Colorize не работает после обновления 2D Array

0

Я использую дуэт ng-repeat для создания таблицы матриц, но после обновления данных функция раскраски (простой возврат "зеленый", если аргумент выше 0) перестает работать.

Когда я загружаю первые (поддельные) данные, цвета работают очень хорошо, но после любых обновлений он перестает работать. При инициализации массива 2d он будет всегда загружаться и отображаться правильно. Я не нашел ошибок отладки или проблем с логикой.

Jfiddle UPDATE **: Я создал простую функцию, которая меняет несколько значений в "исходном" 2D-массиве, и я по-прежнему сталкиваюсь с проблемой, когда она не обновляет цвета. Я довольно уверен, что это проблема AngularJS (недостаток?), А не проблема с самими данными.

HTML

<!-- MATRIX TABLE -->
    <div class="center w80" >
        <div id = "MatrixTable2">
            <table border="1">
                <thead>
                    <tr>
                        <th></th> <!-- blank -->
                        <th ng-repeat="ppp in PlayerIDList">{{ppp.name}}</th>
                    </tr>
                </thead>
                <tbody>
                    <tr width="50px" ng-repeat="row in Matrix" >
                        <td class="rowlabel">{{PlayerIDList[$index].name}}</td>
                        <td width="50px" ng-repeat="col in row track by $index" ng-class="::funcGetColorByBool({{col}})">{{col}}</td>
                    </tr>
                </tbody>
            </table>
        </div>
        <!-- END MATRIX TABLE -->
  • 0
    Не могли бы вы добавить свой JS-код к вашему вопросу? Также jsfiddle, чтобы показать проблему, было бы здорово.
  • 0
    Есть страницы кода, которые не влияют на проблему. Я контролировал данные и тип данных, идущие в функцию funcGetColorByBool (), и они идентичны до и после обновления фактических значений. Просто кажется, что страница не обновляется, в отличие от любого традиционного дефекта.
Теги:
function
matrix

1 ответ

1
Лучший ответ

Я считаю, что ваша проблема связана с классом, префикс :: this означает, что это выражение оценивается только один раз.

"::funcGetColorByBool({{col}})"

Кроме того, вам нужно исправить ваше выражение, чтобы передать значение col:

из:

ng-class="::funcGetColorByBool({{col}})"

чтобы:

ng-class="funcGetColorByBool(col)"

Вот рабочий плункер.

  • 0
    Я использую тот же стиль вызова функций в других своих угловых проектах, и они обновляются просто отлично. Однако я попытался без :: и проблема все еще сохраняется. Грустный.
  • 0
    нг-класс принимает выражение. Таким образом, вам не нужен (и не должен) синтаксис {{binding}.
Показать ещё 2 комментария

Ещё вопросы

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