Рендеринг более одного шаблона в HTML во время выполнения - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь сопоставить шаблон в html, и для каждого сопоставленного шаблона я заменяю его реальным инструментом, вызывая функцию Index инструмента, который имеет представление в качестве шаблонов jsrender, но, например, для шаблонов no match 4затем 3 инструмента загружаются успешно, и один из них никогда не загружается и выдает

Неизвестный шаблон Js Render error.

Я знаю, это потому, что я заменяю этот 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 фактическими инструментами.

...