$(function() { /** * [简单模板,用来组装字符串 liumingren] * @param {[string]} 模板 * @param {[object|array]} 替换的对象数据 格式为 (模板:值),多个放在数组里 * @return {[string]} [替换后的htmlString] */ format = function(){ var args = [].slice.call(arguments),str = String(args.shift() || ""), ar = [], first = args[0]; args = $.isArray(first) ? first : typeof(first) == 'object' ? args : [args]; $.each(args, function(i, o){ ar.push(str.replace(/\{\{([\d\w\.]+)\}\}/g, function(m, n, v){ v = n === 'INDEX' ? i : o[n]; return v === undefined ? m : ($.isFunction(v) ? v.call(o, n) : v) })); }); return ar.join(''); }; var articleList = { init:function () { this.allLoadNews(); this.bindEvent(); }, bindEvent:function () { var self = this; $(document) .on("click",".artlTagUl > .artlTagButton",function (e) { var tagId = $(this).addClass("on").siblings(".artlTagButton").removeClass("on").end().attr("data-tagid") || "", artlListId = $(this).parents(".wqdelementEdit.articleListsTag").attr("data-artllistid")||"", $elem = $(".wqdelementEdit.articleLists").filter("[data-artllistid="+artlListId+"]").attr("data-ontagid",tagId); self.loadCurrentNews($elem,{ tagIds:tagId }); }) .on("click",".articleLists .artListPaging li",function (e) { var $elem = $(this).parents(".articleLists"); self.loadCurrentNews($elem,{ tagIds:$elem.attr("data-ontagId")|| ($elem.attr("data-tagid")||"").split(",")[0] || "", pageNo:$(this).attr("data-index") }); }); }, /** * 页面中的列表载入数据 */ allLoadNews:function () { var self = this; $(".wqdelementEdit.articleLists").each(function (i,_) { self.loadNews($(_)); }); }, /** * 某列表控件载入数据 * @param $this */ loadNews:function ($this) { var self = this, data = {}; var dfd = this.showTagList($this); $.when(dfd).done(function () { data.tagIds = $this.attr("data-ontagId"); self.loadCurrentNews($this,data); }); }, /** * 载入文章列表数据 * @param {[type]} $elem [description] * @param data * @return {[type]} [description] */ loadCurrentNews:function ($elem,data) { var self = this, temp = $elem.find(".artlitemp").text() || this.updateLiTemp($elem), pageId = $elem.attr("data-pageid"), lis = [],listModel,html; data.tagIds = data.tagIds || $elem.attr("data-ontagId")|| ($elem.attr("data-tagid")||"").split(",")[0] || ""; data.pageNo = data.pageNo || 0; data.pageSize = data.pageSize || $elem.attr("data-pagesize") || 3; data.orderBy = data.orderBy || $elem.attr("data-orderby") || "PUBLISH_TIME"; $.get("/article/page",data,function (data) { if(!$.isArray(data.data.data) || data.endRows == 0) { html = ""; } else { $.each(data.data.data,function(index, value) { listModel = { "title":value.title, "time":self.formatTime($elem,value.publishTime || ""), "viewCount":value.pv || 0, "follow":value.favourable||0, "summary":value.summary || value.descn, "image":value.icon ?CSSURLPATH + value.icon : value.otherIcons ? value.otherIcons.split(",")[0] : "http://img.wqdian.com/group2/M00/01/95/yq0KXlad6FmASHPDAAALAiR3NvE906.jpg", "url":pageId ? "page_" + pageId + "_" + value.id + ".html" : "" }; lis.push(format(temp,listModel)); }); html = lis.join("").replace(/data-src/g,"src"); } html = lis.join("").replace(/data-src/g,"src"); $elem.addClass("artlShow").find(".artlUl").html(html); self.showPaging($elem,data.data); }); }, /** * 生成li的模版 * @param {[type]} $elem [description] * @return {[type]} [description] */ updateLiTemp:function ($elem) { var $li = $elem.find(".artlUl li").eq(0).clone(), $artlitemp = $elem.find("script.artlitemp"),temp; // 替换内容为模版 var formatTemp = function ($li) { $li.find("[data-artltemp]").each(function (i,_) { $(_).html("{{"+$(_).attr("data-artltemp")+"}}"); }).end() .find("[data-artlAttrTemp]").each(function(i, _) { var $this = $(_), artTemp = $this.attr("data-artlAttrTemp"); var artTempArr = artTemp.split("."); if(artTempArr[0] == "src") { $this.attr("data-"+artTempArr[0],"{{"+artTempArr[1]+"}}").removeAttr(artTempArr[0]); }else { $this.attr(artTempArr[0],"{{"+artTempArr[1]+"}}"); } }); return $li[0].outerHTML.replace(/wqdselected/g,""); }; temp = formatTemp($li); $artlitemp.length ? $artlitemp.html(temp) : $elem.prepend(""); return temp; }, /** * 加载标签列表 * @return {[type]} [description] */ showTagList:function ($elem, tagIds,isFirstLoad) { var self = this, tagDfd = $.Deferred(); tagIds = tagIds || $elem.attr("data-tagid")||""; if(self.tagsData) { tagDfd.resolve(); }else { $.get("/article/tags",function (data) { self.tagsData = data; tagDfd.resolve(); }); } $.when(tagDfd).done(function () { var artllistId = $elem.attr("data-artllistid"); if(artllistId) { var temp = "
{{text}}