JQuery Ready和angularJS controller的执行顺序问题

项目中使用了JQuery和AngularJS框架,最近定位一个问题,原因就是JQuery Ready写在了angularJS controller之前,导致JQuery选择器无法选中需要的元素(因为angularJS controller还没有初始化,dom元素的class属性没有被添加)。于是就引出了一个问题,jquery和angularjs谁先执行谁后执行的问题。当然最好我们编写的代码不要依赖于这种顺序,依赖于某些顺序的代码更容易出错。

<html>
  <head>
    <script src="jquery-1.10.2.js"></script>
	<script src="angular-1.2.2/angular.js"></script>
	<script>
		$(function(){
			printLogAndWait("first jquery ready.");
		});

		$(function(){
			printLogAndWait("second jquery ready.");
		});

		// 创建moudle1
		var rootMoudle = angular.module('module', []);
        rootMoudle.controller("root_controller",function($scope){
			printLogAndWait("in angular controller.begin");
			$scope.name="";
			$scope.list = [{name:1},{name:2}];
			printLogAndWait("in angular controller.end");
		});  

		$(function(){
			printLogAndWait("jquery ready right before angular.");
		});

		angular.element(document).ready(function() {
			printLogAndWait("angular ready.begin");
            angular.bootstrap(document.getElementById("root_div"),["module"]);
			printLogAndWait("angular ready.end");
		});  

		$(function(){
			printLogAndWait("jquery ready right after angular.");
		});

		console.log("I am first execute.");

		function printLogAndWait(log, milliseconds)
		{
			console.log(log);
			if(!milliseconds)
			{
				milliseconds = 200;
			}

			var begin = new Date().getTime();
			var end = begin;

			while(end - begin < milliseconds)
			{
				end = new Date().getTime();
			}
		}
	</script>
  </head>

  <body  id="root">
		<div id="root_div" ng-controller="root_controller"></div>
  </body>
</html>

输出结果如下:

I am first execute.
first jquery ready.
second jquery ready.
jquery ready right before angular.
angular ready.begin
in angular controller.begin
in angular controller.end
angular ready.end
jquery ready right after angular.

可以看到:JQuery Ready和angularJS controller都是在domready之后执行的,谁在前谁先执行。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 12:49:11

JQuery Ready和angularJS controller的执行顺序问题的相关文章

(十六)JQuery Ready和angularJS controller的运行顺序问题

项目中使用了JQuery和AngularJS框架,近期定位一个问题,原因就是JQuery Ready写在了angularJS controller之前,导致JQuery选择器无法选中须要的元素(由于angularJS controller还没有初始化,dom元素的class属性没有被加入).于是就引出了一个问题,jquery和angularjs谁先运行谁后运行的问题.当然最好我们编写的代码不要依赖于这样的顺序,依赖于某些顺序的代码更easy出错. <html> <head> <

jquery的AJAX中各个事件执行顺序

jquery的AJAX中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.error 7.ajaxError (全局事件) 8.complete 9.ajaxComplete(全局事件) 10.ajaxStop(全局事件)

jquery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较

想要添加这个效果,先来弄明白页面的加载和事件执行顺序,看这个简单例子: 1 <html xmlns="http://www.w3.org/1999/xhtml"> 2 <head > 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4 <title>验证加载顺序</title> 5 <s

jquery.ready可以在文档加载后尽快执行对文档的操作

jquery 1.12.4中ready的关键代码 1 jQuery.ready.promise = function( obj ) { 2 if ( !readyList ) { 3 4 readyList = jQuery.Deferred(); 5 6 // Catch cases where $(document).ready() is called 7 // after the browser event has already occurred. 8 // Support: IE6-1

多个$(document).ready()函数的执行顺序问题,(未解决)

今天遇到了一个问题: jQuery获取不了动态添加的元素,我使用的是append添加的.寻求了帮助,得到解决方案: 在文件开头写上这样一段代码来获取,写在$(document).ready()里面. 问题得到了解决,此时文件中,出现了多个$(document).ready()函数(jQuery允许使用多个),就想知道他们的执行顺序是怎样的了,网上找了资料:只有一个是这样说的(http://blog.csdn.NET/pwair/article/details/14162235), <html>

多个$(document).ready()的执行顺序问题

本文以实例形式说明了多个$(document).ready()的执行顺序问题,由实例可以看出多个$(document).ready()的执行顺序并非单纯的顺序执行,其与嵌套层级也有一定的关系.具体实例代码如下: <html> <head> <script src="./jquery-1.9.0.min.js"></script> <script type="text/javascript"> $(funct

jQuery ajax的执行顺序简单介绍

jQuery ajax的执行顺序简单介绍:jQuery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false即可.代码如下: function TestAjax() { var UserName = $("#txtUserName").val(); $.ajax({ url:"AjaxCheckUserName.htm", async:false, success:function(data

jquery ajax中success与complete的执行顺序 (转)

http://blog.sina.com.cn/s/blog_4adc4b090101dhnh.html https://q.cnblogs.com/q/21810/ ****************************************************************** jQuery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.

jquery ajax 事件执行顺序

jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.error 7.ajaxError (全局事件) 8.complete 9.ajaxComplete(全局事件) 10.ajaxStop(全局事件) Ajax中success与complete的关系 $.ajax({ type: "get|post", url: url, dataType: