0

这个问题让我非常头疼——我不知道为什么,但在我的应用程序中,我有两个 $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 上发生变化 :(

4

1 回答 1

3

无法重现您的问题 - 但我们已经看到双重控制器/范围的类似问题,因为我们不小心指定了两次控制器 - 一次在路由表($routeProvider.when(..., controller="xyzCtrl", templateUrl="xyz.html")中,再次在我的模板(data-ng-controller="xyzCtrl")中。删除其中任何一个都可以解决问题。希望这是朝着正确方向的线索。

于 2013-08-02T20:04:19.580 回答