我注意到在我的一个控制器中,我正在注入 $rootScope 和 $scope,它们都指向同一个对象。
此外,在我所有的其他控制器中,$scope 对象是共享的。因此,每当我注入作用域时,它都包含在迄今为止已实例化的所有其他控制器中分配给它的属性/方法。
这不是我从一开始就开发的应用程序,它非常庞大。我以前没有见过这种行为,我不知道从哪里开始诊断它。任何想法是什么原因造成的?
我们设置控制器/指令的方式非常标准,看起来像这样:
angular.module('myApp')
.directive('mainNav', function() {
return {
restrict: 'A',
templateUrl: 'scripts/directives/mainNav/mainNav.html',
controller: 'mainNavCtrl',
replace: true,
link: function(scope, element) {
//Do DOM-related stuff
});
}
};
})
.controller('mainNavCtrl', function($rootScope, $scope, $state) {
//Do controller stuff
});
我们还按如下方式配置我们的应用程序:
angular.module('myApp', ['ui.router', 'kendo.directives'])
.config(function ($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/');$stateProvider .state('app', { url: '/', templateUrl: 'views/app.html', resolve: { //Fetch stuff } }) ; });
回应 Kursad Gulseven 的评论,这就是我在 Batarang 看到的:
ID 为 002 的范围作为 $scope 和 $rootScope 传递给第一个控制器。将属性添加到 $scope 时,它们会显示在 $rootScope 上。然后所有其他控制器都接收 ID 为 00A 的范围。因此,在这些控制器中添加到 $scope 的属性对于注入 $scope 的所有其他控制器都是可见的。