entity-browser-frontend/app/directive/toogle.js (33 lines of code) (raw):

angular.module('xodus') .directive('xxxToggleCheckbox', [function () { return { restrict: 'A', transclude: true, replace: false, require: 'ngModel', link: function ($scope, $element, $attr, require) { var ngModel = require; $element.parent().addClass('animation-disabled'); function updateModelFromElement() { var checked = $element.prop('checked'); if (checked !== ngModel.$viewValue) { ngModel.$setViewValue(checked); $scope.$apply(); } } function updateElementFromModel() { $($element).trigger('change'); } $($element).on('change', updateModelFromElement); $scope.$watch(function () { return ngModel.$viewValue; }, updateElementFromModel); $scope.$watch(function () { return $element.attr('disabled'); }, function (newVal) { $($element).bootstrapToggle(!newVal ? "enable" : "disable"); }); $($element).bootstrapToggle(); } }; }]);