0

我正在尝试掌握 ClientDependency Framework 的窍门。 https://github.com/Shazwazza/ClientDependency 我在 Umbraco 网站中使用它。

我遇到了一些我想运行的自定义 javascript(不在文件中)的问题。

我想运行一个函数(在“functions.js”中),但每页使用不同的参数。

因此,我将以下内容添加到我的模板中:

Html.RequireJs("~/scripts/functions.js", 1);

在我添加的 -tag 之前的母版页上:

@Html.RenderJsHere()

但是我在哪里放置我的函数调用?我不能只将它添加到我的模板中,因为“functions.js”尚未加载(它位于我的母版页底部)。

我考虑过为每个调用创建一个 js 文件并将它们添加到 Html.RequireJs(...) 但这不是一个很好的解决方案。

有没有办法将内联脚本添加到“JS-to-render”列表中?

编辑:我只是想使用 RenderSection() 让它工作,但是当在宏上定义该部分时,这似乎不起作用?

编辑:在我输入这个的那一刻,我没有这里的代码,但想法是这样的:

函数.js

function WriteToConsole(input) {
    console.log('Log', input);
}

模板1.cshtml

@{Html.RequireJs("functions.js");}
<script>
    WriteToConsole("This is from template 1");
</script>

模板2.cshtml

@{Html.RequireJs("functions.js");}
<script>
    WriteToConsole("This is from template 2");
</script>

大师.cshtml

<body>
    @RenderBody()

    @Html.RenderJsHere()
</body>

只是想知道我正在尝试做什么。可以想象,<script>我的模板上的部分现在被functions.js包括在内之前被调用。这会导致错误。

还是我处理这整件事错了?

4

1 回答 1

0

您是否尝试更改脚本调用:Html.RequireJs("~/scripts/functions.js", 1);

所以像Html.RequireJs("~/scripts/functions.js?myparam=xyz", 1);这就是你想要实现的但让网址是动态的吗?

如果是这样,您可以执行以下操作:

//perhaps have some logic above to determine what the query should be and concatenate it to the string like so.
string query = "?myparam=xyz";
string scriptcall = "~/scripts/functions.js"+query ;
Html.RequireJs(scriptcall, 1);

您能否提供更多代码,以便我们可以看到您正在尝试做什么?也许列出它应该如何工作的步骤?

于 2018-07-05T15:25:41.820 回答