标签:angular和jquery加载顺序 获取injector和scope报错 jqlite和jquery差别
如果我们的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>下面的代码我们先加载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>
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:angular和jquery加载顺序 获取injector和scope报错 jqlite和jquery差别
原文地址:http://blog.csdn.net/aitangyong/article/details/48131575