AngularJS: indeterminate checkbox
HTML
<script src="http://docs-next.angularjs.org/angular-0.10.5.min.js" ng:autobind></script>
<input type="checkbox" ng:model="value" />
<a href ng:click="value=!value">toggle</a>
<a href ng:click="value='intederminate'">indeterminated</a>
value={{value}}
JavaScript
angular.inputType('checkbox', function(inputElement) {
var widget = this,
trueValue = inputElement.attr('ng:true-value'),
falseValue = inputElement.attr('ng:false-value'),
indValue = inputElement.attr('ng:ind-value');
if (!angular.isString(trueValue)) trueValue = true;
if (!angular.isString(falseValue)) falseValue = false;
if (!angular.isString(indValue)) indValue = 'intederminate';
inputElement.bind('click', function() {
widget.$apply(function() {
widget.$emit('$viewChange', inputElement[0].checked);
});
});
widget.$render = function() {
inputElement[0].checked = widget.$modelValue === trueValue;
inputElement[0].indeterminate = widget.$modelValue === indValue;
};
widget.$parseModel = function() {
widget.$viewValue = this.$modelValue === trueValue;
};
widget.$parseView = function() {
widget.$modelValue = widget.$viewValue ? trueValue : falseValue;
};
});