Я пытаюсь преобразовать синтаксис синтаксиса "$ 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'
};
});
В этом контексте вы можете быть недопониманием относительно 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'
};
});
В вашем контроллере вы заявляете
$scope.vm = {
checkTotal: DEFAULT_CHECK_TOTAL
};
Затем вы делаете tipController as vm
Когда вы связываете {{vm.checkTotal}}
vm - это не $ scope.vm, это $ scope. Для того, что вы написали, вы должны использовать {{vm.vm.checkTotal}}
($ scope.vm.checkTotal).
Изменение: ответ Макото показывает, как вы выполнили бы свое поведение.