我需要延迟AngularJS脚本的运行,以便可以首先设置我的应用程序。我需要用ng app=“app”初始化应用程序。我想将该属性添加到< body >
<;正文ng app=“app”></正文>
wp_enqueue_script(\'plugin-setup\', plugin_dir_url( __FILE__ ).\'js/plugin-setup.js\', array(\'jquery\'), null, true);
plugin-set.js
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementsByTagName("body")[0].setAttribute("ng-app", "app");
});
设置完成后,我可以运行角度脚本:
class pluginClass{
function pluginInit(){
add_action( \'wp_enqueue_scripts\', array( $this, \'scriptThings\' ) );
}
function scriptThings(){
wp_enqueue_script(\'angular-core\', plugin_dir_url( __FILE__ ).\'js/vendor/angular/angular.js\', array(\'jquery\'), null, true);
wp_enqueue_script(\'angular-resource\', plugin_dir_url( __FILE__ ).\'js/vendor/angular-resource/angular-resource.js\', array(\'jquery\'), null, true);
wp_enqueue_script(\'app\', plugin_dir_url( __FILE__ ).\'js/app.js\', array(), null, true);
wp_enqueue_script(\'app-controller\', plugin_dir_url( __FILE__ ).\'js/controllers/app_controller.js\', array(), null, true);
wp_enqueue_script(\'imagetile-factory\', plugin_dir_url( __FILE__ ).\'js/resource/imageTile_factory.js\', array(), null, true);
}
}
$my_class = new pluginClass;
add_action(\'init\', array($my_class, \'pluginInit\'));
有没有办法延迟角度脚本在我的
plugin.php*?
SO网友:Robert hue
我想你应该用setTimeout
暂停脚本的执行而不阻塞UI。
setTimeout(function(){
//your code to be executed after 2 seconds
}, 2000);
因此,您的代码将成为。
setTimeout(function(){
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementsByTagName("body")[0].setAttribute("ng-app", "app");
});
}, 2000);
这将延迟脚本执行2秒。您可以根据需要更改此值。
再想一想,我想如果在初始化应用程序之前检查当前页面中是否加载了AngularJS会更好。
function checkAngular() {
if ( window.angular ) {
// your code to be executed
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementsByTagName("body")[0].setAttribute("ng-app", "app");
});
} else {
window.setTimeout( checkAngular, 1000 );
}
}
checkAngular();
那么这段代码做什么呢?它检查AngularJS是否已成功加载。如果AngularJS已初始化,则它将执行代码,否则将延迟1秒并再次检查,直到加载AngularJS。