layui.define(['table', 'jquery', 'element'], function (exports) { "use strict"; var MOD_NAME = 'message', $ = layui.jquery, element = layui.element; var message = function (opt) { this.option = opt; }; message.prototype.render = function (opt) { //默认配置值 var option = { elem: opt.elem, url: opt.url ? opt.url : false, height: opt.height, data: opt.data } if (option.url != false) { option.data = getData(option.url); var notice = createHtml(option); $(option.elem).html(notice); var targetNode = document.querySelector(option.elem + ' .pear-notice') var mutationObserver = new MutationObserver(function (mutationsList, observer) { if (getComputedStyle(targetNode).display !== 'none') { var rect = targetNode.getBoundingClientRect(); //是否超出右侧屏幕 if (rect.right > $(window).width()) { var elemRight = document.querySelector(option.elem).getBoundingClientRect().right; var offsetRight = 20; targetNode.style.right = elemRight - $(window).width() + offsetRight + 'px'; targetNode.style.left = 'unset'; } } }); mutationObserver.observe(targetNode, { attributes: true, childList: false, subtree: false, attributeOldValue: false, attributeFilter: ['class'] }); } setTimeout(function () { element.init(); $(opt.elem + " li").click(function (e) { $(this).siblings().removeClass('pear-this'); $(this).addClass('pear-this'); }) }, 300); return new message(option); } message.prototype.click = function (callback) { $("*[notice-id]").click(function (event) { event.preventDefault(); var id = $(this).attr("notice-id"); var title = $(this).attr("notice-title"); var context = $(this).attr("notice-context"); var form = $(this).attr("notice-form"); callback(id, title, context, form); }) } /** 刷 新 消 息 */ message.prototype.reload = function () { } /** 同 步 请 求 获 取 数 据 */ function getData(url) { $.ajaxSettings.async = false; var data = null; $.get(url, function (result) { data = result; }); $.ajaxSettings.async = true; return data; } function createHtml(option) { var count = 0; var noticeTitle = ''; noticeContent += ''; notice += noticeTitle; notice += noticeContent; notice += ''; return notice; } exports(MOD_NAME, new message()); })