模板字符串中的${}跟freemaker冲突的问题

有一个需求是:在table中添加一个行,然后获取该行有一个隐藏的input,是自增的,所以获取当前的后台传递的list集合的size然后加一,一般就是js的增加子节点的操作,以前都是拼接字符串然后往里面新增变量,还一种前端的写法是使用模板字符串,但是跟目前的freemaker中${}冲突

模板字符串:

// 普通字符串
`In JavaScript '\n' is a line-feed.`

// 多行字符串
`In JavaScript this is
not legal.`

// 字符串中嵌入变量
var name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`   // Hello Bob, how are you today?

${}获取的时候会出现为空异常,它会获取后台传递过来的值,但是后台没有这个值,冲突无法解决

这样只能拼接字符串,拼接字符串比较麻烦,所以想到一个取巧的方法

首先一个字符串、然后将里面的变量替换,然后在编译该字符串,测试正常

代码如下:

// 	增加
	$('.add').click(function(){	
		var trsize = $(".uptable>tbody").children("tr").length-1;
// 		alert(trsize);
		$('.uptable input').attr("disabled",false)		
		$('#editluck').text('保存')
		var index =Number($(this).context.getAttribute('id'))+1;
// 		alert(index)
		if(trsize == index){
			 var str = '<tr class=""><td><input type="text"   value="index"  style="display:none"/>'+
				'</td><td><span>彩金数字index:</span><input type="text"  value=""/></td>'+
				'<td><span>奖励金额:</span><input type="text"  value=""/></td></tr>'
				var newstr = str.replace('index',index).replace('index',index);
	// 		alert(index);
	// 		alert(newstr);
			$('.btns').before(
					newstr
			);
		}else{
			layui.use('layer', function(){
	 			  var layer = layui.layer;	  
	 			  layer.alert('请先保存!', {icon: 1});
					});  
		}
	})

目前测试正常,可能投机取巧了,只是放上来记录一下。

猜你喜欢

转载自blog.csdn.net/qq_38058332/article/details/87966710