在运行时在html中渲染多个模板

时间:2019-02-04 09:09:33

标签: javascript jsrender

我正在尝试在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中的模式。

0 个答案:

没有答案