首页 > 代码库 > directive例子2
directive例子2
(function() { angular.module(‘app.widgets‘) .directive(‘bsModalPlus‘, function($window, $sce, $modal) { return { restrict: ‘A‘, scope: true, link: function(scope, element, attr, transclusion) { // Directive options var options = { scope: scope, element: element, show: false }; angular.forEach([‘template‘, ‘templateUrl‘, ‘controller‘, ‘controllerAs‘, ‘contentTemplate‘, ‘placement‘, ‘backdrop‘, ‘keyboard‘, ‘html‘, ‘container‘, ‘animation‘, ‘backdropAnimation‘, ‘id‘, ‘prefixEvent‘, ‘prefixClass‘], function(key) { if (angular.isDefined(attr[key])) options[key] = attr[key]; }); // Default template url if (!options[‘templateUrl‘] || options[‘templateUrl‘].length == 0) options[‘templateUrl‘] = ‘widgets/modal/modal.template.html‘ // use string regex match boolean attr falsy values, leave truthy values be var falseValueRegExp = /^(false|0|)$/i; angular.forEach([‘backdrop‘, ‘keyboard‘, ‘html‘, ‘container‘], function(key) { if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) options[key] = false; }); // Support scope as data-attrs angular.forEach([‘title‘, ‘content‘], function(key) { attr[key] && attr.$observe(key, function(newValue, oldValue) { scope[key] = $sce.trustAsHtml(newValue); }); }); //default container and placement if (!options[‘container‘]) options[‘container‘] = ‘body‘; if (!options[‘backdrop‘]) options[‘backdrop‘] = ‘static‘; if (!options[‘placement‘]) options[‘placement‘] = ‘center‘; options[‘animation‘] = ‘am-fade-and-slide-top‘ // Support scope as an object scope.$data =http://www.mamicode.com/ {}; attr.bsModalPlus && scope.$watch(attr.bsModalPlus, function(newValue, oldValue) { if (angular.isObject(newValue)) { angular.extend(scope.$data, newValue); } else { scope.content = newValue; } }, true); scope.showOkButton = !attr.showOkButton || attr.showOkButton == "true"; scope.showCloseButton = !attr.showCloseButton || attr.showCloseButton == "true"; // Initialize modal var modal = $modal(options); scope.$ok = function() { if (scope.$broadcast("ok").defaultPrevented) modal.hide(); }; scope.$close = function() { scope.$broadcast("close"); modal.hide(); }; // Trigger element.on(attr.trigger || ‘click‘, modal.toggle); // Garbage collection scope.$on(‘$destroy‘, function() { if (modal) modal.destroy(); options = null; modal = null; }); } }; });})();
directive例子2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。