Как выполнить JavaScript после асинхронной c загрузки результата PartialView? - PullRequest
0 голосов
/ 21 февраля 2020

В моем представлении Razor я вызываю частичное представление с Fetch API, и это прекрасно работает:

<script>
    window.onload = async function () {
        await fetch('http://localhost:53801/Home/VesselPartial')
            .then((response) => { return response.text(); })
            .then((result) => {
                document.getElementById('loadVessel').innerHTML = result;
                document.getElementById('loader').style.display = 'none';
                document.getElementById('loadVessel').style.display = 'block';
            });
    };
</script>

Он выполняет частичный бэкэнд в контроллере и отображает частичное представление. Проблема возникает, когда я хочу выполнить JavaScript, отвечающий за HTML элементы из частичного представления. Как я уже заметил, я не могу выполнить любой <script> из моего частичного cs html. Также помощники, вызванные из _Layout.cshtml, не помогают, если DisplayPartial равно async. Я пытаюсь выяснить, как вызвать ViewComponent после моего вызова Fetch, потому что в ViewComponent у меня есть JavaScripts. В приведенном ниже коде ViewComponent, к сожалению, выполняется до того, как DisplayPartial завершил свою бэкэнд-работу.

<script>
    window.onload = async function () {
        await fetch('http://localhost:53801/Home/VesselPartial')
            .then((response) => { return response.text(); })
            .then((result) => {
                document.getElementById('loadVessel').innerHTML = result;
                document.getElementById('loader').style.display = 'none';
                document.getElementById('loadVessel').style.display = 'block';
            });
                @await Component.InvokeAsync(nameof(VesselDetailsScripts))
    };
</script>

Как заставить Component.InvokeAsync ждать, пока Fetch API result будет готов? Я уже несколько часов бьюсь с этим ...

...