Трудно обобщить в одном вопросе, но вот детали:
У меня есть проект ASP.NET MVC 3 (многие из них на самом деле).
Моя стандартная практика заключается в том, чтобы для каждого представления был метод Init()
, который запускается, когда документ готов. Здесь я помещаю весь свой код пользовательского интерфейса, например кнопки рендеринга и аккордеоны и т. Д.
Я использую хитрость, чтобы скрыть неформатированные html-элементы, установив для тега html
значение display: none
, и после завершения Init()
я могу отобразить все.
Это работает довольно хорошо, но у меня изначально было отображение содержимого на моей странице макета, но оно выполнялось до того, как код Init представления завершился. Это становится еще сложнее, если я использую частичные представления с их собственным Javascript.
Я хотел бы прикрепить обратный вызов в одном месте, который срабатывает после завершения всех моих возможных вызовов Init()
.
Я пытался использовать пользовательские события, но тогда мне пришлось бы запускать их в конце каждого метода Init, и это не очень эффективно.
Заранее спасибо за любую помощь.
запрашиваемый код:
Страница макета
<script>
$("html").addClass('init') // init has display: none
$(function() {
InitLayout() // Basic stuff for every page like menu, buttons, etc
$("html").removeClass('init'); // show all content
});
</script>
Просмотр страницы
<script>
$(function() {
ViewInit() // Init all custom ui elements on page: tabs, accordions, etc
});
</script>
Проблема в том, что removeClass
будет происходить до того, как сработает Init
каждой страницы. Я пытаюсь найти способ избежать вызова removeClass
внизу каждого Init
метода. Есть ли способ присоединить обратный вызов программно, чтобы избежать повторения кода. Моя главная цель здесь - реализовать скрытие нестандартного содержимого до тех пор, пока все не будет завершено глобально, поэтому мне не нужно беспокоиться об этом в каждом представлении.