12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- define([ "require", "backbone", "hbs!tmpl/common/Modal" ], function(require, Backbone, template) {
- var Modal = Backbone.View.extend({
- className: "modal",
- events: {
- "click .close": function(event) {
- event.preventDefault(), this.trigger("closeModal"), this.options.content && this.options.content.trigger && this.options.content.trigger("closeModal", this, event);
- },
- "click .cancel": function(event) {
- event.preventDefault(), this.trigger("closeModal"), this.options.content && this.options.content.trigger && this.options.content.trigger("closeModal", this, event);
- },
- "click .ok": function(event) {
- event.preventDefault(), this.trigger("ok"), this.options.content && this.options.content.trigger && this.options.content.trigger("ok", this, event),
- this.options.okCloses && this.close();
- }
- },
- initialize: function(options) {
- this.options = _.extend({
- title: null,
- okText: "确认",
- focusOk: !0,
- okCloses: !0,
- cancelText: "取消",
- allowCancel: !1,
- allowBackdrop: !0,
- showFooter: !0,
- escape: !0,
- animate: !0,
- contentWithFooter: !1,
- template: template,
- width: null,
- buttons: null
- }, options);
- },
- render: function() {
- var $el = this.$el, options = this.options, content = options.content;
- return $el.html(options.template(options)), content && content.$el ? (content.render(),
- options.contentWithFooter ? $el.find(".modal-content").append(content.$el) : $el.find(".modal-body").html(content.$el)) : options.htmlContent && $el.find(".modal-body").append(options.htmlContent),
- options.animate && $el.addClass("fade"), this.isRendered = !0, this;
- },
- onClose: function() {
- alert("close");
- },
- open: function(cb) {
- this.isRendered || this.render(), $(".tooltip").tooltip("hide");
- var self = this, $el = this.$el;
- $el.modal(_.extend({
- keyboard: this.options.allowCancel,
- backdrop: !this.options.allowBackdrop || "static"
- }, this.options.modalOptions)), $el.one("shown", function() {
- self.options.focusOk && $el.find(".btn.ok").focus(), self.options.content && self.options.content.trigger && self.options.content.trigger("shown", self),
- self.trigger("shown");
- });
- var numModals = Modal.count, $backdrop = $(".modal-backdrop:eq(" + numModals + ")"), backdropIndex = parseInt($backdrop.css("z-index"), 10), elIndex = parseInt($backdrop.css("z-index"), 10);
- return $backdrop.css("z-index", backdropIndex + numModals), this.$el.css("z-index", elIndex + numModals),
- this.options.allowCancel && ($backdrop.one("click", function() {
- self.options.content && self.options.content.trigger && self.options.content.trigger("closeModal", self),
- self.trigger("closeModal");
- }), $(document).one("keyup.dismiss.modal", function(e) {
- 27 == e.which && self.trigger("closeModal"), self.options.content && self.options.content.trigger && 27 == e.which && self.options.content.trigger("shown", self);
- })), this.on("cancel", function() {
- self.close();
- }), Modal.count++, cb && self.on("ok", cb), $el.one("shown.bs.modal", function() {
- self.trigger("shownModal");
- }), $el.find(".header-button").on("click", "button", function() {
- var headerButtons = self.options.headerButtons, clickedButtonIndex = $(this).data("index"), clickedButtonObj = headerButtons && headerButtons[clickedButtonIndex];
- clickedButtonObj && clickedButtonObj.onClick && clickedButtonObj.onClick.apply(this, arguments);
- }), this;
- },
- close: function() {
- var self = this, $el = this.$el;
- return this._preventClose ? void (this._preventClose = !1) : ($(".tooltip").tooltip("hide"),
- $el.one("hidden.bs.modal", function onHidden(e) {
- return e.target !== e.currentTarget ? $el.one("hidden.bs.modal", onHidden) : (self.remove(),
- self.options.content && self.options.content.trigger && self.options.content.trigger("hidden.bs.modal", self),
- void self.trigger("hidden.bs.modal"));
- }), $el.modal("hide"), void Modal.count--);
- },
- preventClose: function() {
- this._preventClose = !0;
- }
- }, {
- count: 0
- });
- return Modal;
- });
|