Mustache模板遍历输出数据

关于Mustache模板引擎的用法,大家可以看这里:http://www.fantxi.com/blog/archives/mustache-template/

或者各种百度google

 

这里说下自己实际用到的情况

首先页面定义好模板,关键循环遍历的是这个 {{#talentMedals}}标签下面的内容

<ul style="display:none;" id="hidePart_${map.key}"></ul>
<p class="pBtnMore"><a id="aChange_${map.key}" href="javascript:loadMoreTalents(${map.key})" class="aChange">加载更多</a></p>

<script id="tmpl1" type="text-x-mustache-tmpl">
	 <li>
	   <i class="iPic"><a href="{{link}}" target="_blank"><img src="{{img}}" width="85" height="85" /></a></i>
	   <i class="iTxt">
		 <span class="sTit"><a href="{{link}}">{{nickName}}</a><a href="" target="_blank" class="aKing" title="{{levelName}}">{{level}}</a></span>
		 <span class="sCon">
		 {{#talentMedals}}
		 <a href="" class="aCon{{no}}" title="{{medalName}}"></a>
		 {{/talentMedals}}
		</span>
	   </i>
	</li>
</script>

 页面触发的js方法:

function loadMoreTalents(medalId) {
		var pageNo = 2;
		var pageSize = 2;
		
		$.post("${ROOT}/talent/loadMoreTalents.do?medalId=" + medalId +"&pageNo=" + pageNo + "&pageSize=" + pageSize,"",function(data){
			alert(data.items);
			//n++;
			pageNo ++;
			var itemTmpl = $('#tmpl1').html();
			alert(itemTmpl);
			var res = [];
			$.each(data.items, function(i, item){
				res.push(Mustache.to_html(itemTmpl, item));
			});
			var savedCmt = $("#hidePart_" + medalId).html();
			alert("saveCmt:" + savedCmt);
			$("#hidePart_" + medalId).html(savedCmt + res.join(""));
			$("#hidePart_" + medalId).show();
			/* if ( pageNo >= 1) {
				$("#hidePart" + medalId).parent().hide();              
			} */
			
		},"json");
	}

后台服务器方法:

@RequestMapping(value="/talent/loadMoreTalents.do")
    public void loadMoreTalents(HttpServletRequest request, HttpServletResponse response) throws Exception {
    	long medalId = EnvUtils.getEnv().paramLong("medalId",0);
    	int pageNo = EnvUtils.getEnv().paramInt("pageNo",2);
    	int pageSize = EnvUtils.getEnv().paramInt("pageSize",3);
    	
    	List<Talent> talents = talentService.listTalentsByMedalId(pageNo, pageSize, medalId);
    	
    	JSONArray jsonArray = new JSONArray();
    	if(talents != null && !talents.isEmpty()) {
    		JSONObject json = null;
    		for(Talent talent : talents) {
    			json = new JSONObject();
    			long passportId = talent.getUser().getPassportId();
    			String userImgStr = T.face(passportId, "http://dev2.pclady.com.cn:9192/upchead/", "70x70");
    			json.put("link", "/users/otherUser.do?userId=" + talent.getUser().getUserId());
    			json.put("img", userImgStr);
    			json.put("nickName", talent.getUser().getNickName());
    			json.put("levelName", talent.getTalentLevel().getName());
    			json.put("level", talent.getTalentLevel().getLevel());
    			Map<Integer, Medal> map = talent.getMedals();
    			Iterator<Integer> it = map.keySet().iterator();
    			JSONArray medalArray = new JSONArray();
    			while(it.hasNext()) {
    				int id = it.next();
    				Medal medal = map.get(id);
    				JSONObject medalJson = null;
    				if(medal != null) {
    					medalJson = new JSONObject();
    					medalJson.put("no", id);
    					medalJson.put("medalName", medal.getName());
    					medalArray.add(medalJson);
    				}
    				
    			}
    			json.put("talentMedals", medalArray);
    			jsonArray.add(json);
    			
    		}
    	} 
    	
    	String str = "{\"items\":" + jsonArray.toJSONString()+"}";
    	System.out.println("------------items-----> " + str);
    	response.getWriter().println(str);
    }

 

可以看到,返回的结果是:

{"items":[{
	"img": "http://dev2.pclady.com.cn:9192/upchead//38/8/388_70x70",
	"level": 2,
	"levelName": "2级达人",
	"link": "/users/otherUser.do?userId=99",
	"nickName": "fish",
	"talentMedals": [{
		"medalName": "美容",
		"no": 1
	},
	{
		"medalName": "时尚",
		"no": 2
	}]
},
{
	"img": "http://dev2.pclady.com.cn:9192/upchead//90/3/903_70x70",
	"level": 2,
	"levelName": "2级达人",
	"link": "/users/otherUser.do?userId=100",
	"nickName": "handy",
	"talentMedals": [{
		"medalName": "彩妆",
		"no": 3
	},
	{
		"medalName": "点评",
		"no": 5
	}]
}]}

 

 

 

你可能感兴趣的:(mustache)