2013-08-04 2 views
2

Я пытаюсь подражать электронной таблице, используя AngularJS и ng-grid. Мои потребности просты, но я ничего не могу найти где-нибудь, что поможет мне исправить мой код.angularjs ng-grid расчетная колонка

У меня есть простая таблица баллов, и в последней колонке мне нужен стол «Итоговый счет».

Вы можете увидеть мой код на этом plunk.

Моя проблема в том, что, хотя я смог получить общее количество в каждой строке документа document.load, я не могу сделать обновление столбца «» всякий раз, когда какой-либо из оценок изменен.

+0

Где находится колонка 'Total' ?? – Cherniv

+0

В настоящее время обратный вызов ячейки редактирования еще не поддерживается. вы можете попробовать его реализовать. https://github.com/angular-ui/ng-grid/issues/282 – zsong

+0

@sza Как я хочу, я достаточно владею, чтобы реализовать его сам! – dashmug

ответ

9

Или же, вы можете добавить функцию getTotal() непосредственно к объекту модели:

http://plnkr.co/edit/LhlK1C?p=preview

Я предпочитаю решение, в которых я не должен работать с $watch(), но это зависит если вы хотите, чтобы сумма была сохранена в вашей модели или нужна только для отображения.

+0

Быстрое сравнение производительности с Batarang в Chrome говорит о том, что мое решение может показаться мне более впечатляющим, чем Clark, но это нужно будет исследовать более подробно. Объяснение может заключаться в том, что решение Кларка должно создать 2 глубинные копии всего дерева данных для каждого обновления ячейки (сначала для изменения пользователя, второе для общего изменения), в то время как мое только должно создать его. – vsp

+0

Мне нравится это решение, но как мне вернуть модель «original_data» вместе с дополнительным столбцом? Может ли быть решение, где мне не нужно создавать 2 копии дерева данных? – dashmug

+0

Решил мою проблему, спасибо. Кроме того, я предпочитаю добавлять вычисляемые поля в службу, получая данные, внутри функции «transfromResponse», чтобы контроллер просто получал данные с полями. – Thomas

2

Вы можете следить за изменениями в объекте 'original_data' и воссоздавать объект process_data каждый раз при обновлении.

http://plnkr.co/edit/c4iynItnznKNRoFgeuio?p=preview

+0

Я читал о $ scope. $ Watch, но никогда не понимал, как его использовать до тех пор, пока Теперь. Благодарю. – dashmug

-1

Я создал вариант вышеприведенного примера, представленный Кларком Пан. Массив столбцов имеет список пар ключ: значение (year и salesCount). СтолбецDefs для столбцов с salesCount генерируется динамически. Таким образом, вы можете добавить больше элементов в массив столбцов без изменения столбцов.

http://plnkr.co/edit/ecuAdvaUYECGaHdyVr4g

Смежные вопросы