Я нахожусь в процессе перемещения своих частичных представлений для просмотра компонентов, поскольку компоненты в соответствии с Microsoft значительно лучше, чем частичные представления, особенно при обработке сложных представлений ..
Для частичных представлений, которые я сейчас портирую для просмотра компонентов, у меня много jQuery скриптов. Обычно я вызываю мои jQuery компоненты в моей $(document).ready()
функции следующим образом:
$(document).ready(function(){
Component1.init();
Component2.init();
....
})
Этот лог c был очень полезен, потому что эти представления нужно обновлять несколько раз. Поэтому при частичном просмотре компоненты были повторно инициализированы, потому что функция $(document).ready()
всегда запускалась бы, когда документ частичного просмотра был готов после обновления.
Однако, переходя к просмотру компонентов, я все еще пытаюсь сделать то же. К сожалению, я понял, что $(document).ready()
запускается только в первый раз, когда компонент представления готов. Это означает, что при обновлении компонента представления функция $(document).ready()
не запускается и, следовательно, не инициализируются компоненты jQuery. Я использую стандартный вызов Ajax для нацеливания на контроллер, который возвращает viewcomponent - Все работает нормально, за исключением того, что функция $(document).ready()
не запускается после обновления.
Примечание
Обходной путь должен был бы инициализировать мои компоненты в ajax ответе об успехе. Это работает, но, тем не менее, не желательно.
- Что здесь происходит?
- Почему моя функция
$(document).ready()
не срабатывает после обновления компонента просмотра? - Как мне правильно решить эту проблему, чтобы все мои jQuery компоненты инициализировались, когда компонент представления готов?
Пример:
//view with component
<div id="Component">
<vc:mycomponent lead="Model.Lead"></vc:mycomponent>
</div>
//Script Inside component
<script>
$(document).ready(function () {
Component.init();
});
var Component = (function () {
var $button;
var $component
var init = function() {
cacheDom();
handlers();
}
var cacheDom = function(){
var $button = $('#button1')
var $component = $('#Component')
}
var handlers = function () {
$button.on('click', function() {
handleclick();
})
}
var handleClick = function(){
$.ajax({
url: 'Controller/ViewComponent',
type: 'GET',
success: function (response) {
$component.html(response);
}
});
}
return {init : init}
})
</script>