Как правильно добавить функцию $watch
в сочетании с оператором switch? Я по существу пытаюсь создать одну переменную, которая работает для моих функций (IE: vm.clear()
) и передать ее DOM на основе того, что выбрано (IE: A или B).Как смотреть переменную в инструкции switch?
Итак, выбрав «A» и нажав vm.clear()
, следует установить {{vm.A}}
в 0, оставив {{vm.B}}
самостоятельно. Также, выбрав «B» и нажав vm.clear()
, следует установить {{vm.B}}
в 0, оставив только {{vm.A}}
.
<div ng-class="{selected:vm.selectedInput==='A'}" ng-click="vm.selectInput('A')">{{vm.A}}</div>
<div ng-class="{selected:vm.selectedInput==='B'}" ng-click="vm.selectInput('B')">{{vm.B}}</div>
<button ng-click="vm.clear()">Clear</button>
.controller('MyCtrl', function($scope) {
var vm = this;
vm.selectedInput = 'A';
vm.A = '5';
vm.B = '6';
vm.selectInput = function(input) {
vm.selectedInput = input;
switch (input) {
case 'A':
$scope.$watch('selectedOutput', function() {
vm.selectedOutput = vm.A;
});
break;
case 'B':
$scope.$watch('selectedOutput', function() {
vm.B = vm.selectedOutput;
});
break;
}
};
vm.clear = function() {
vm.selectedOutput = '0';
};
});
Попробуйте 'vm.selectedOutput = vm [input]' вместо переключателя –
Простите мое невежество, но зачем вам нужно $ watch для этого? – wdanda
@vp_arth Я смог получить это функционирование, мне пришлось переместить мою функцию в другую функцию. В этом случае появилась проблема, что она больше не функционирует при загрузке страницы, потому что они находятся в другой функции, которая не срабатывает, пока не будет выбран один из div. Любая идея, как это исправить? [plunker] (http://plnkr.co/edit/56vmhQGrKaO50YI6E53l?p=preview) – nightowl