我正在使用 AngularJS 开发一个Web应用程序,我想知道如何设置一些$scope
变量,这些变量是我所有控制器的公共变量(或很大一部分它们)。
我在尝试什么:
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services', 'ui.bootstrap'])
.run(function($ionicPlatform, $rootScope, $location, Common) {
$ionicPlatform.ready(function() {
//Set default global values
$rootScope.$on('$stateChangeSuccess', function (event) {
$scope.universe = "Universe and other things :)";
$scope.elsewhere = "Good day sir";
$scope.fish = "Perfectly well";
});
});
});
});
因此,我不必每次都在每个控制器中编写相同的内容:
angular.module('starter.controllers').controller('Controller1', function($scope) {
//I don't want this:
$scope.universe = "Universe and other things :)";
});
angular.module('starter.controllers').controller('Controller2', function($scope) {
//I don't want this:
$scope.elsewhere = "Good day sir";
});
angular.module('starter.controllers').controller('Controller3', function($scope) {
//I don't want this:
$scope.fish = "Perfectly well";
});
重要的是我甚至不希望为此目的使用services
,因为我不想在每个控制器中进行分配。
答案 0 :(得分:4)
添加到我的评论中:
这就是我要做的,为我的应用程序创建一个控制器,这将是我的“全球”东西。
.controller('AppCtrl', ['$scope', function AppCtrl($scope) {
$scope.$on('$stateChangeSuccess', function () {
$scope.universe = "Universe and other things :)";
$scope.elsewhere = "Good day sir";
$scope.fish = "Perfectly well";
});
});
并将其添加到您的HTML中:
<html ng-app="myAppName" ng-controller="AppCtrl">
因此,这将创建一个单独的$scope
,以便从其他“子”控制器访问该范围,您需要$scope.$parent
。
但是,如果我们采用您的原始代码,这应该有效:
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services', 'ui.bootstrap'])
.run(function($ionicPlatform, $rootScope, $location, Common) {
$ionicPlatform.ready(function() {
//Set default global values
$rootScope.$on('$stateChangeSuccess', function (event) {
$rootScope.universe = "Universe and other things :)";
$rootScope.elsewhere = "Good day sir";
$rootScope.fish = "Perfectly well";
});
});
});
});
然后您就可以在控制器中使用$rootScope
,或在HTML /视图中使用universe
等。