Как нарезать / обрезать переменную $ scope в AngularJS

0

Я новичок в AngularJS, и я пытаюсь обрезать/нарезать/удалить последний символ из переменной ($ scope.checkTotal), когда щелкнул ng-click = "del()".

Может быть, мой подход ошибочен, но до сих пор я пробовал:

$scope.checkTotal.slice($scope.checkTotal, -1);

$scope.checkTotal.substring(0, $scope.checkTotal.length - 1);

$scope.checkTotal.substring(0, length - 1);


.controller('tipController', function($scope) {

  // Numpad
  $scope.checkTotal = '0.00';

  $scope.clicked = function (label) {
    if($scope.checkTotal === '0.00') {
      $scope.checkTotal = label;
    } else {
      $scope.checkTotal += label;
    }
   };

   // Prevent multiple decimals
   $scope.clickedDot = function() {
      if (($scope.checkTotal.indexOf('.') < 0) || ($scope.checkTotal === '0.00')) {
        if ($scope.checkTotal === '0.00') {
          $scope.checkTotal = '0.';
        } else {
          $scope.checkTotal += '.';
        }
      }
  };

   $scope.del = function () {
      $scope.checkTotal.substring(0, length - 1);
   };

});
  • 1
    $scope.checkTotal = $scope.checkTotal.substring(0, length - 1)
  • 0
    Любое из того, что вы пробовали, будет работать, если вы назначите новое значение переменной.
Теги:

3 ответа

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

Ваш подход правильный, но срез метода ожидает длину вашей переменной (строка или массив). возможно, вы можете попробовать:

$scope.checkTotal = $scope.checkTotal.slice(0, $scope.checkTotal.length-1);
  • 0
    Когда я реализую это, он удаляет всю строку и оставляет меня с ""?
  • 0
    хорошо, какой у тебя тип переменной? какое содержание у вашей переменной типа?
Показать ещё 6 комментариев
3

Вам нужно назначить возвращаемые значения из вызовов функций. Например

$scope.checkTotal.substring(0, length - 1);

должно быть

$scope.checkTotal = $scope.checkTotal.substring(0, $scope.checkTotal.length - 1);

Также вам следует, вероятно, рассмотреть случай, когда кто-то нажимает кнопку "Удалить" с помощью ничего в текстовом поле. Было бы неудобно получить $scope.checkTotal.substring(0, -1);

  • 0
    Ваш ответ работает, но так же и $ scope.checkTotal = $ scope.checkTotal.slice (0, $ scope.checkTotal.length-1); ниже. Есть ли причина выбирать один над другим (подстрока против ломтика)?
  • 0
    Основное различие, о котором я могу подумать, заключается в том, что substr поменяет местами аргументы начала и конца, если end> start, и вернет любую часть строки, которая там находится. Slice возвращает пустую строку в этом случае использования. Для более подробного объяснения: rapd.wordpress.com/2007/07/12/javascript-substr-vs-substring .
1

Вы должны переназначить результат обратно на переменную. Нарезка также срезается от начала и до конца. Попробуй это.

$scope.checkTotal = $scope.checkTotal.slice(0, -1);
  • 0
    Этот ответ работает вместе с другими ниже. Разница в том, что .slice против .substring. Есть ли эмпирическое правило или обоснование выбора одного над другим?
  • 0
    Есть несколько методов, которые делают одно и то же. Единственное отличие состоит в том, что у них есть несколько маленьких причуд, которые могут привести к неожиданному поведению, если даны неверные аргументы. На этот вопрос был дан ответ в другом вопросе stackoverflow.com/questions/2243824/… .

Ещё вопросы

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