@Devastor
I ❤❤❤ JAVASCRIPT

Как в Angular пересчитывать данные на странице?

Пользователь вводит данные в инпуты.
В других инпутах нужно произвести над данными действия и вывести, как сделать, что бы при каждом изменении данных происходил пересчет и вывод? Как правильно вешать обработчик на форму?

Так не работает
<input value="{{Math.round(wh.price*wh.count/100)}}">
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
делать это в контроллере, а не во вьюшках, а во вьюшках только ng-model и никаких формул во вьюшках.

пример (этот же способ предлагал @kirill-93)

Профит - можно удобно и красиво покрыть это дело тестами, все предсказуемо, удобно писать да и производительность такого решения намного лучше. Ну и да, по мере усложнения формул, зависимостей элементов и т.д. это все намного удобнее разруливать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
DEMO.

angular.module('toster', [])

.controller('MainCtrl', function($scope) {
    $scope.data = {
        price: 0,
        count: 0
    };
    
    $scope.$watchCollection('data', function(data) {
        var computed = 0;
        
        var count = parseInt(data.count, 10);
        
        if (count) {
            computed = Math.round(data.price * count / 100);
        }
        
        $scope.computed = computed;
    });
});
Ответ написан
<input ng-model="superModel">
scope.$watch("Math.round(wh.price*wh.count/100)", function(val){
    scope.superModel = val;
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы