Включите ассоциацию «один ко многим» в сиквелизацию

Цель OP состоит в том, что он хочет определить встроенные скрипты в свой Partial View, который я предполагаю, что этот скрипт специфичен только для этого Partial View и включает этот блок в его секцию скриптов.

Я понимаю, что он хочет, чтобы Partial View был автономным. Идея аналогична компонентам при использовании Angular.

Моим способом было бы просто сохранить скрипты внутри Partial View как есть. Теперь проблема в том, что при вызове Partial View он может выполнять скрипт там перед всеми другими скриптами (который обычно добавляется к нижней части страницы макета). В этом случае у вас есть сценарий Partial View, ожидающий других скриптов. Есть несколько способов сделать это. Простейший, который я использовал ранее, использует событие на body.

В моем макете у меня было бы что-то внизу:

// global scripts
<script src="js/jquery.min.js"></script>
// view scripts
@RenderSection("scripts", false)
// then finally trigger partial view scripts
<script>
  (function(){
    document.querySelector('body').dispatchEvent(new Event('scriptsLoaded'));
  })();
</script>

Затем в моем частичном представлении (внизу):

<script>
  (function(){
    document.querySelector('body').addEventListener('scriptsLoaded', function() {

      // .. do your thing here

    });
  })();
</script>

Другое решение - использовать стек, чтобы выталкивать все ваши скрипты и вызывать каждого в конце. Другим решением, как уже упоминалось, является шаблон RequireJS / AMD, который также отлично работает.

1
задан lellefood 28 March 2019 в 08:25
поделиться