我试图了解这里发生了什么事。该警告是不言自明的,我意识到在应用程序中,使用下面的代码和结构,它运行 ng-view 两次(“测试”将在控制台中记录两次,所以角度当然会加载两次! )....但为什么?
我已经阅读了我能找到的所有关于它的文章,它似乎归结为 jQuery 在 Angular 之前加载。
如果我省略 jQuery 或者如果我在 angualr 之后加载 jQuery(根据我的理解,这不是一个好的做法),没问题。我想让 jQuery 支持一些功能(特别是ui-可排序 https://github.com/angular-ui/ui-sortable)。而且,虽然它似乎实际上并没有造成任何问题,但我不想让它运行我的 ng-view 两次。
我是否在结构上做错了什么,或者我是否缺少一个明显的方法来解决这个问题?
Update: 问题的笨蛋 http://plnkr.co/edit/T1LabWb3FrlWNl3b8ug8?p=preview(检查控制台)
索引.html:
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Site Title</title>
</head>
<body ng-view>
<script type="text/javascript">
console.log('test')
</script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-route.js"></script>
<script type="text/javascript" src="app_simple.js"></script>
</body>
</html>
app_simple.js:
'use strict';
/**
* Configure client module
*/
var myApp = angular.module('myApp',
[
'ngRoute'
]);
myApp.config(function ($routeProvider) {
$routeProvider
.when('/simple', {
templateUrl: 'components/simple/simple.html',
controller: 'SimpleCtrl'
})
.otherwise({
redirectTo: '/x'
})
});
myApp.controller('SimpleCtrl', ['$scope', '$log', '$http', function($scope, $log, $http){
}]);
简单.html:我的简单内容