как рассчитать сумму объекта с помощью функции часов

0

Мне нужно рассчитать сумму свойств объекта на входе пользователя. У меня есть функция настройки с часами, но я не получаю результат. У меня есть скрипка с тем, что у меня есть. рабочая скрипка

 $scope.model = {}
    function total() {
        var totalNumber = 0;
        totalNumber = totalNumber + $scope.model.minPrice + $scope.model.maxPrice + $scope.model.occup

        return totalNumber;
    };
    $scope.$watch('model', function (newVal, oldVal) {
        $scope.model.total = total();
        console.log($scope.model.total)
    }, true);

и скриншот консоли

Изображение 174551

  • 0
    Кажется, вы добавляете строки, а случайные undefined . Вы, вероятно, хотите сделать некоторые проверки типов и преобразования

2 ответа

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

Оператор + перегружен для конкатенации строк.

Один из вариантов - передать ваши строки целым, используя parseInt() прежде чем добавлять их. Вы можете использовать логический оператор OR, чтобы заботиться о NaN. Это один из способов.

totalNumber = (parseInt($scope.model.minPrice) || 0)
  + (parseInt($scope.model.maxPrice) || 0)
  + (parseInt($scope.model.occup) || 0);
  console.log($scope.model);

Обновлена скрипка.

  • 0
    я не вижу общую сумму в консоли?
  • 0
    @ texas697 извинения, пропустил маленькую логическую бомбу. Обновлено / исправлено.
1

Это может быть просто, как это, хотя вам нужно будет фильтровать пустые и недопустимые значения.

$scope.$watch('model', function() {
  $scope.model.total = parseInt($scope.model.minPrice) 
    + parseInt($scope.model.maxPrice) 
    + parseInt($scope.model.occup);
}, true);

демонстрация

Ещё вопросы

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