У меня возникли проблемы с загрузкой моих сценариев для страницы, которую я использую, с формой knockout.js. Как только страница загружается, мой js-файл, содержащий viewmodel, не сразу загружается, поэтому появляются ошибки, которые заставляют страницу затухать все мои сообщения проверки и отображать divs, которые должны быть скрыты, но затем загружаются, а форма затем появляется нормально.Проблемы с порядком загрузки Knockout.JS
На main.ctp (CakePHP просмотр файла) Я загрузить файл с именем loadScripts.JS, который содержит следующие
//loadscripts.JS
jQuery(document).ready(function ($) {
load_scripts();
});
function load_scripts(){
$.getScript("localhost/js/knockout-2.3.0.js", function() {
$.getScript("http://localhost/js/Knockout-Validation/Src/knockout.validation.js", function() {
retrieve_window();
});
});
}
Итак, этот момент нокаутом и нокаут-проверки загружаются. Затем она вызывает функцию, которая находится на main.ctp, чтобы получить окно, которое содержит форму нокаута
//main.ctp
<script src="/localhost/js/loadscripts.js"></script> <!-- this is the JS file I showed above
function retrieve_window(){
$.post("/demo/demo_window/1",function(data) {
$('#window_wrapper').html(data);
});
}
наПредставления demo_window (CakePHP), то ViewModel сразу называете в голове
//demo_window.ctp
<head>
<script src="localhost/js/demo_form.js"></script>
</head>
Таким образом, порядок, которые загружаются скрипты является (подтвержденное вкладке сети в Chrome)
- Knockout
- Нокаут-Validation
- demo_form.ctp (Нокаут питание форма)
- demo_form.js (вид-модель для формы)
Я даже попытался погрузочный demo_form.js в кластере $ getScripts выше, но, несмотря на нагрузки до demo_form. ctp форма даже не показалась «видимой» js вообще. Все ошибки проверки и скрытые divs отображались. Таким образом, последовательность нагрузки затем (подтверждена вкладка сети в Chrome)
- Knockout
- Нокаут-Validation
- demo_form.js (вид-модель для формы)
- demo_form.ctp (Нокаут питания формы)
Странная вещь, это не дало мне никаких ошибок. Он просто отображается так, как если бы были ошибки (отображаются сообщения проверки, отображаемые скрытые divs).