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();
}
};
}]);