(十七)JQuery框架一定要在angularJS之前加载
来源:互联网 发布:homebrew mysql 编辑:程序博客网 时间:2024/04/29 14:50
如果我们的web页面只引入angulrjs框架(不引入jQuery框架),那么我们使用过程中可能会遇到如下错误:
Error: [jqLite:nosel] Looking up elements via selectors is not supported by jqLite!
错误代码1:
<html> <head> <script src="angular-1.2.25.js"></script> <script> var myModule = angular.module('myModule', []); myModule.controller("ctrl_1",function($scope,$injector){$scope.test = function(){var t = angular.element("#btn").injector();alert(t==$injector);}});angular.element(document).ready(function() { angular.bootstrap(document.getElementById("div1"),["myModule"]); }); </script> </head> <body><div id="div1" ng-controller="ctrl_1"><input id="btn" type="button" value="injector" ng-click="test();"></input></div> </body></html>这是因为angular.element()这个API并不能支持类似jquery的选择器,也就是说angular.element()并不支持selector。最好引入JQuery框架,因为jQuery框架选择元素实在是太方便了。如果我们确实不想使用jQuery,那么可以使用HTML5中的document.querySelector(),这个API是支持选择器的。
正确代码1:
<html> <head> <script src="angular-1.2.25.js"></script> <script> var myModule = angular.module('myModule', []); myModule.controller("ctrl_1",function($scope,$injector){$scope.test = function(){var t = angular.element(document.querySelector("#btn")).injector();alert(t==$injector);}});angular.element(document).ready(function() { angular.bootstrap(document.getElementById("div1"),["myModule"]); }); </script> </head> <body><div id="div1" ng-controller="ctrl_1"><input id="btn" type="button" value="injector" ng-click="test();"></input></div> </body></html>
有一点特别需要注意:如果页面中使用了jQuery和angular,那么一定要先加载jQuery框架,然后再加载angular。
下面的代码我们先加载angular后加载jQuery,当点击injector的按钮的时候,会报错:
TypeError: $(...).injector is not a function
<html> <head> <script src="angular-1.2.25.js"></script> <script src="jquery-1.11.1.min.js"></script><script> var myModule = angular.module('myModule', []); myModule.controller("ctrl_1",function($scope,$injector){$scope.test = function(){var t = $("#btn").injector();alert(t==$injector);}});$(function(){angular.bootstrap($("#div1")[0], ["myModule"]); })</script> </head> <body><div id="div1" ng-controller="ctrl_1"><input id="btn" type="button" value="injector" ng-click="test();"></input></div> </body></html>
正确代码2:
<html> <head><script src="jquery-1.11.1.min.js"></script> <script src="angular-1.2.25.js"></script> <script> var myModule = angular.module('myModule', []); myModule.controller("ctrl_1",function($scope,$injector){$scope.test = function(){var t = $("#btn").injector();alert(t==$injector);}});$(function(){angular.bootstrap($("#div1")[0], ["myModule"]); })</script> </head> <body><div id="div1" ng-controller="ctrl_1"><input id="btn" type="button" value="injector" ng-click="test();"></input></div> </body></html>
0 0
- (十七)JQuery框架一定要在angularJS之前加载
- 为什么requestWindowFeature一定要在setContentView之前调用?
- jQuery参考实例 1.2 在DOM加载完毕,页面元素完全加载之前运行jQuery/JavaScript代码
- DNS MX记录一定要放在A记录之前
- 关于使用RequestWindowFeature为啥一定要在setContentView之前调用
- MySQLDump在使用之前一定要想到的事情
- MySQL在创建索引之前一定要想到的事情
- MySQLDump在使用之前一定要想到的事情
- php curl_multi_exec 一定要在 curl_multi_select之前调用原因分析
- 使用Angularjs、jQuery在手机上实现滑动条到底自动加载更多功能
- AngularJS进阶(十七)在AngularJS应用中实现微信认证授权遇到的坑
- 报告缺陷之前一定要搜索
- angularjs-jqLite(在angularjs中使用jquery)
- angularjs比JQuery优越在哪里
- 一个公司的管理之三:在公布任何的任命、制度之前一定要三思
- 设置导航条的背景一定要在导航条显示之前
- mysqldump导入导出数据库总结;MySQLDump在使用之前一定要想到的事情
- 松柏先生: 这16条品牌秘笈一定要抢在你的竞争对手之前学会!
- 面试题17:合并两个排序的链表
- 解析AsyncTask<Params, Progress, Result>()
- 硬件十万个为什么——运放篇(九)实际运放的参数
- 使用SuspendLayout和ResumeLayout
- java系统学习(六) --------继承
- (十七)JQuery框架一定要在angularJS之前加载
- CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4
- 详解数据库 Schema
- HDU 4911 Inversion(逆序对-BIT)
- WEB项目中配置属性加密的方式
- win2003中iis与asp设置Session会话过期时间的问题
- mysql 时间戳与日期格式的相互转换
- 通知
- 怎样快速将pdf转换成txt格式