Angular 1.2:
<input type="checkbox" ng-model="vm.myChkModel" ng-click="vm.myClick(vm.myChkModel)">
У меня нет правильного состояния в моей функции myClick
?
Я хочу состояние после клика.
Angular 1.2:
<input type="checkbox" ng-model="vm.myChkModel" ng-click="vm.myClick(vm.myChkModel)">
У меня нет правильного состояния в моей функции myClick
?
Я хочу состояние после клика.
Порядок выполнения ng-click
и ng-model
неоднозначен, поскольку они не определяют четких приоритетов. Вместо этого вы должны использовать ng-change
или $watch
на $scope
, чтобы убедиться, что вы получили правильные значения переменной модели.
В вашем случае это должно работать:
<input type="checkbox" ng-model="vm.myChkModel" ng-change="vm.myClick(vm.myChkModel)">
Вместо ng-click вы можете использовать ng-change:
<!doctype html>
<html>
<head>
<script src="http://code.angularjs.org/1.2.3/angular.min.js"></script>
<script>
var app = angular.module('myapp', []);
app.controller('mainController', function($scope) {
$scope.vm = {};
$scope.vm.myClick = function($event) {
alert($event);
}
});
</script>
</head>
<body ng-app="myapp">
<div ng-controller="mainController">
<input type="checkbox" ng-model="vm.myChkModel" ng-change="vm.myClick(vm.myChkModel)">
</div>
</body>
</html>
кардинальный ответ был действительно полезен. Сделал это немного дальше и решил, что это может помочь другим, кто там, где вниз. Вот скрипка:
https://jsfiddle.net/vtL5x0wh/
И код:
<body ng-app="checkboxExample">
<script>
angular.module('checkboxExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.value0 = "none";
$scope.value1 = "none";
$scope.value2 = "none";
$scope.value3 = "none";
$scope.checkboxModel = {
critical1: {selected: true, id: 'C1', error:'critical' , score:20},
critical2: {selected: false, id: 'C2', error:'critical' , score:30},
critical3: {selected: false, id: 'C3', error:'critical' , score:40},
myClick : function($event) {
$scope.value0 = $event.selected;
$scope.value1 = $event.id;
$scope.value2 = $event.error;
$scope.value3 = $event.score;
}
};
}]);
</script>
<form name="myForm" ng-controller="ExampleController">
<label>
Value1:
<input type="checkbox" ng-model="checkboxModel.critical1.selected" ng-change="checkboxModel.myClick(checkboxModel.critical1)">
</label><br/>
<label>Value2:
<input type="checkbox" ng-model="checkboxModel.critical2.selected" ng-change="checkboxModel.myClick(checkboxModel.critical2)">
</label><br/>
<label>Value3:
<input type="checkbox" ng-model="checkboxModel.critical3.selected" ng-change="checkboxModel.myClick(checkboxModel.critical3)">
</label><br/><br/><br/><br/>
<tt>selected = {{value0}}</tt><br/>
<tt>id = {{value1}}</tt><br/>
<tt>error = {{value2}}</tt><br/>
<tt>score = {{value3}}</tt><br/>
</form>
Порядок выполнения ng-click и ng-model отличается от angular 1.2 vs 1.6
Вы должны проверить, с 1.2 и 1.6,
например, с angular 1.2, ng-click получить выполнение перед ng-моделью, с angular 1.6, ng-модель, возможно, выйдет до ng-click.
чтобы вы получили значение "true checked" / "false uncheck", возможно, вы не ожидаете