ClientDependency Framework & Razor, добавьте пользовательский JS - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь освоить 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 (...), но это не лучшее решение.

Есть ли способ добавить inline-скрипт в список "JS-to-render"?

редактировать: Я просто пытался заставить его работать, используя RenderSection (), но, похоже, это не работает, когда раздел определен в макросе?

редактировать: У меня нет кода здесь в данный момент, я набираю это, но идея такова:

functions.js

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

* 1031 template1.cshtml ** * 1032 @{Html.RequireJs("functions.js");} <script> WriteToConsole("This is from template 1"); </script> template2.cshtml

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

master.cshtml

<body>
    @RenderBody()

    @Html.RenderJsHere()
</body>

Просто чтобы дать представление о том, что я пытаюсь сделать. Как вы можете себе представить, часть <script> в моем шаблоне теперь вызывается до включения functions.js. И это приводит к ошибке.

Или я все это неправильно делаю?

1 Ответ

0 голосов
/ 05 июля 2018

Вы пытаетесь изменить вызов скрипта в: Html.RequireJs("~/scripts/functions.js", 1);?

Так что-то вроде Html.RequireJs("~/scripts/functions.js?myparam=xyz", 1); Это то, что вы пытаетесь достичь, но URL-адрес будет динамичным?

Если это так, вы можете сделать что-то вроде этого:

//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);

Не могли бы вы предоставить больше кода, чтобы мы могли видеть, что вы пытаетесь сделать? Может быть, список шагов по тому, как это должно работать?

...