这个问题让我非常头疼——我不知道为什么,但在我的应用程序中,我有两个 $rootScope,$id 为“001”和“003”(每个都有单独的变量)。我检查了 ng-app 的出现,它只在主页上出现过一次。
有人知道为什么会这样吗?
Angular 1.1.5(与 1.0.7 相同)
索引.cshtml
<html lang="en" ng-app="app">
<head>
<meta charset="utf-8" />
<title></title>
<meta name="viewport" content="width=device-width" />
@Cassette.Views.Bundles.RenderStylesheets()
</head>
<body id="body" class="container-fluid" ng-app="app">
<div ng-view ng-cloak class="row-fluid">
</div>
@Cassette.Views.Bundles.RenderScripts()
</body>
</html>
应用程序.js:
var app = angular.module('app', ['ngResource', 'ngCookies'])
.config(['$locationProvider', '$routeProvider', '$httpProvider', function ($locationProvider, $routeProvider, $httpProvider) {
var access = RoutingConfig.accessLevels;
$locationProvider.html5Mode(false);
$routeProvider
.when('/',
{
redirectTo: '/Entries'
})
.when('/Login',
{
templateUrl: 'Views/Security/Login',
controller: 'LoginController',
access: access.anonymous
})
.when('/Entries',
{
templateUrl: 'Views/Entry/List',
controller: 'EntryListController',
access: access.user
});
}])
.run(['$rootScope', '$location', 'SecurityService', function ($rootScope, $location, SecurityService) {
$rootScope.$on("$locationChangeStart", function (event, next, current) {
$rootScope.error = null;
if (!SecurityService.Authorize(next.access ? next.access : RoutingConfig.accessLevels.public)) {
if (SecurityService.IsLoggedIn()) {
$location.path('/');
}
else {
$location.path('/Login');
}
}
});
}]);
只是为了确保两个模板都是空的。$rootScope 在第二个 $locationChangeStart 上发生变化 :(