目前存在的问题:1.当页面中重复存在变量{var}时,只能解析第一个,后面的全部显示为{var}
2.在test.tpl的block中,使用
<!-- BEGIN ROW -->
<a href="{num}">{num} {num2}</a><BR>
<!-- END ROW -->
</table>
时可以的,但是使用
<!-- BEGIN ROW -->
aasdfads
<a href="{num}">{num} {num2}</a><BR>
asdadsff
<!-- END ROW -->
</table>
就匹配出错了,问题应该在setblock方法中,不过我调试了很久都没成功,
请哪位修改一下,:)谢谢
2.在test.tpl的block中,使用
<!-- BEGIN ROW -->
<a href="{num}">{num} {num2}</a><BR>
<!-- END ROW -->
</table>
时可以的,但是使用
<!-- BEGIN ROW -->
aasdfads
<a href="{num}">{num} {num2}</a><BR>
asdadsff
<!-- END ROW -->
</table>
就匹配出错了,问题应该在setblock方法中,不过我调试了很久都没成功,
请哪位修改一下,:)谢谢
1.修改setBlock方法 this.setBlock = function (parent,handle,name){
if(!this.loadFile(parent)){
this.haltMsg(parent+"不是有效的句柄");
}
var str = this.getVar(parent);
oRegExp = new RegExp("<!--\\s+BEGIN\\s+"+handle+"\\s+-->\\s*((.|\\n)*)\\s*<!--\\s+END\\s+"+handle+"\\s+-->","g");
oRegExp.Multiline = true;
var match = oRegExp.exec(str);
str = str.replace(oRegExp,left+name+right);
this.setVar(handle,match[1]);
this.setVar(parent,str);
}
2。修改subst方法
this.subst = function(handle){
if(!this.loadFile(handle)){
this.haltMsg(hanlde+"不是有效的句柄");
}
var str = this.getVar(handle);
for(var i=0;i<varkeys.length;i++){
reg = eval(varkeys[i][1]+"g");
str = str.replace(reg,varvals[i][1]);
}
return str;
}
3。修改finish方法
this.finish = function(str){
switch(unkown){
case "keep":
return str;
case "remove":
reg = /{[^ \t\r\n}]+}/g;
str = str.replace(reg,"");
return str;
case "comment":
reg = /{[^ \t\r\n}]+}/g;
str = str.replace(reg,"<!-- Template handle: Variable "+RegExp.$1+" undefined -->");
return str;
}
}