我正在尝试在html中匹配模式,对于每个匹配的模式,我都通过调用具有jsrender模板视图的工具的Index函数来用实际工具替换它,但是例如,不存在4个匹配模式那么3个工具加载成功,其中一个工具从不加载并抛出
未知的模板Js渲染错误。
我知道这是因为我要替换正在发生的html,但是找不到该问题的解决方法。
var str = $(".Element:last").html();
var matchSyntax = str.match(/##(.+)\?(.*)##/ig);
if (matchSyntax != null) {
for (var ele = 0; ele < matchSyntax.length; ele++) {
//seperate out if there is any query parameters.
var splitSyntaxParameters = matchSyntax[ele].split(/##(.+)\?(.*)##/ig); //Split all the strings between # and = so that we get the toolname,tooltype
var callToolParam = splitSyntaxParameters[1].split(/[=#]/ig);
if (callToolParam[1] != "") {
if (callToolParam[1] == "middle") {
if (!callToolParam[3] == "") {
$(".Element:last").html(str.replace(matchSyntax[ele], "<div id='" + callToolParam[3] + "_placeholder" + "'></div>"));
TdcAsyncWebPartLoader.ShowTool({
parameters: {
profileName: splitSyntaxParameters[2]
},
toolname: callToolParam[3],
action: 'Index',
context: dataTool,
});
str = $(".Element:last").html();
}
}
if (callToolParam[1] == "right") {
if (!callToolParam[3] == "") {
$(".Element:last").html(str.replace(matchSyntax[ele], ""));
TdcAsyncWebPartLoader.ShowTool({
parameters: {
profileName: splitSyntaxParameters[2]
},
toolname: callToolParam[3],
action: 'Index',
context: dataTool
});
str = $(".Element:last").html();
}
}
if (callToolParam[1] == "right_fixed") {
if (!callToolParam[3] == "") {
$(".Element:last").html(str.replace(matchSyntax[ele], ""));
TdcAsyncWebPartLoader.ShowTool({
parameters: {
profileName: splitSyntaxParameters[2]
},
toolname: callToolParam[3],
action: 'Index',
context: dataTool
});
str = $(".Element:last").html();
}
}
}
}
我希望所有与模式匹配的工具都应使用实际工具替换html中的模式。