Синтаксическая функция «Controller as» не запускается

0

Я пытаюсь преобразовать синтаксис синтаксиса "$ scope" моего контроллера в синтаксис "контроллер как", и по какой-то причине моя функция прекратила стрельбу и не может понять, что происходит.

ClearCheck() - один из примеров, но ни одна из моих функций не работает.

 <div ng-controller="tipController as vm">
  <div class="row checkTotalDisplay selected">
    <div class="col totalDisplayTitle">Check Total</div>
    <div class="col col-50 totalDisplayAmt">${{vm.checkTotal}} <i class="ion-close-circled" ng-click="vm.clearCheck()"></i></div>
    </div>
  </div>
 </div>

.controller('tipController', ["$scope", function ($scope) {
  var vm = this;
  var DEFAULT_CHECK_TOTAL = '0.00'; // display correctly shows 0.00

  $scope.vm = {
    checkTotal: DEFAULT_CHECK_TOTAL
  };

   function clearCheck() {
     vm.clearCheck = clearCheck; // doesn't fire
     console.log(vm.checkTotal); // doesn't fire
     vm.checkTotal = '4'; // doesn't fire
   };
}]);

синтаксис $ scope, который работает:

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

  $scope.checkTotal = '0.00';

  $scope.clearCheck = function () {
     $scope.checkTotal = '4'; // correctly changes display to '4'
  };
});
Теги:

2 ответа

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

В этом контексте вы можете быть недопониманием относительно vm. Эффективно, вы собираетесь сделать то же самое в своем исходном контроллере с $scope за исключением того, что вы заменяете $scope на vm.

.controller('tipController', function() {
  var vm = this;
  vm.checkTotal = '0.00';

  vm.clearCheck = function () {
     vm.checkTotal = '4'; // correctly changes display to '4'
  };
});
1

В вашем контроллере вы заявляете

$scope.vm = {
    checkTotal: DEFAULT_CHECK_TOTAL
};

Затем вы делаете tipController as vm

Когда вы связываете {{vm.checkTotal}} vm - это не $ scope.vm, это $ scope. Для того, что вы написали, вы должны использовать {{vm.vm.checkTotal}} ($ scope.vm.checkTotal).

Изменение: ответ Макото показывает, как вы выполнили бы свое поведение.

  • 0
    Я думаю, я понимаю, что вы имеете в виду, но на самом деле checkTotal отображается достаточно правильно. Это когда я пытаюсь использовать функцию, она не работает.

Ещё вопросы

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