目前存在的问题: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方法中,不过我调试了很久都没成功,
请哪位修改一下,:)谢谢

解决方案 »

  1.   

    这里下载源码以及范例http://www.uplinux.com/bbs/viewthread.php?tid=11128&sid=o4EN80Q4
      

  2.   

    解决上面遇到的问题的方法:
    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;
    }
    }