/* * @Description: dialog * @Time: 2015/11/18 * @author: chenglong.wang */ var $ = require('yoho-jquery'), Handlebars = require('yoho-handlebars'), Hammer = require('yoho-hammer'); // fullWithBtn是供详情页获取限购码使用的特殊参数 exports.showDialog = function(data, callback, callbackForLeft, fullWithBtn) { var dialogStr, $dialogBox, defaultHideDuraton, $dialogWrapper, dialogWrapperHammer; function getInstance() { var dialogTpl = null, dialogTemplate; if (dialogTpl === null) { dialogTpl = '<div id="dialog-wrapper" class="dialog-wrapper">' + '<div class="dialog-box">' + '{{# hasHeader}}' + '<div class="dialog-header">{{.}}</div>' + '{{/ hasHeader}}' + '<div class="dialog-content">{{{dialogText}}}</div>' + '{{# hasFooter}}' + '<div class="dialog-footer">' + '{{# leftBtnText}}' + '<span class="dialog-left-btn tap-hightlight">{{.}}</span>' + '{{/ leftBtnText}}' + '{{# rightBtnText}}' + '<span class="dialog-right-btn tap-hightlight">{{.}}</span>' + '{{/ rightBtnText}}' + '</div>' + '{{/ hasFooter}}' + '</div>' + '</div>'; dialogTemplate = Handlebars.compile(dialogTpl); } return dialogTemplate; } dialogStr = getInstance()(data); $('.dialog-wrapper').remove(); $('body').append($(dialogStr)); $dialogBox = $('.dialog-box'); $dialogWrapper = $('.dialog-wrapper'); dialogWrapperHammer = new Hammer(document.getElementById('dialog-wrapper')); // 显示 if (data.fast) { $dialogWrapper.css({ display: 'block' }); } else { $dialogWrapper.fadeIn(); } if (fullWithBtn) { $('.dialog-wrapper .dialog-footer > span').css('width', '100%'); $('.dialog-wrapper .dialog-content').css({ 'padding-left': '1.85rem', 'padding-right': '1.85rem' }); $dialogWrapper.css('z-index', '10'); } $dialogBox.css({ top: '50%', marginTop: -($dialogBox.height() / 2) }); // 隐藏 if (data.autoHide) { defaultHideDuraton = 1000; if (data.autoHide > 1) { defaultHideDuraton = data.autoHide; } setTimeout(function() { $dialogWrapper.fadeOut(); }, defaultHideDuraton); } // 禁止在dialog上可以上下滚动 if (!data.student) { $dialogWrapper.on('touchmove', function() { return false; }); } dialogWrapperHammer.on('tap', function(event) { if ($(event.target).hasClass('dialog-left-btn')) { if (typeof callbackForLeft === 'function') { callbackForLeft(); } $dialogWrapper.fadeOut(); } else if ($(event.target).hasClass('dialog-right-btn')) { return callback(); } else { $('.dialog-wrapper').remove(); $('body').css({ overflow: '', position: '', }); } // 防止出现点透问题 event.preventDefault(); event.srcEvent.stopPropagation(); }); }; exports.hideDialog = function() { $('.dialog-wrapper').remove(); };