当我的应用加载设置默认状态时,我想做一些事情。所以我试图在Module对象上使用run方法。当我尝试访问$ scope变量时,虽然我在控制台中收到“未捕获的ReferenceError:$ scope is not defined”消息。
请参阅以下示例http://jsfiddle.net/F2Z2X/1/
app = angular.module('myapp', []);
app.controller('mycontroller', function($scope){
$scope.data = { myvariable: 'Hello' };
});
app.run(
alert($scope.data.myvariable))
);
我是不是错了?
例如,我想在开始时运行一次watchAction函数,以隐藏尚未调用的UI元素,但watchAction函数没有$ scope对象,因为它没有被调用方法,所以我必须把它传递给它,但唉它不可用。
答案 0 :(得分:77)
app.run(function ($rootScope) {
$rootScope.someData = {message: "hello"};
});
您只能$rootScope
注入services
和run
函数,因为每个child scope
都是从其父作用域继承的,而顶级作用域是rootScope
}。因为注入任何范围是不明智的。仅提供根范围。
答案 1 :(得分:3)
var app = angular.module('myApp', []);
app.run(function ($rootScope) {
// use .run to access $rootScope
$rootScope.rootProperty = 'root scope';
});
app.controller("ParentCtrl", ParentCtrlFunction);
app.controller("ChildCtrl", ChildCtrlFunction);
function ParentCtrlFunction($scope) {
// use .controller to access properties inside ng-controller
//in the DOM omit $scope, it is inferred based on the current controller
$scope.parentProperty = 'parent scope';
}
function ChildCtrlFunction($scope) {
$scope.childProperty = 'child scope';
//just like in the DOM, we can access any of the properties in the
//prototype chain directly from the current $scope
$scope.fullSentenceFromChild = 'Same $scope: We can access: ' +
$scope.rootProperty + ' and ' +
$scope.parentProperty + ' and ' +
$scope.childProperty;
}
这是简单的流程,我们有rootScope,parentScope,childScope。在每个部分我们分配相应的范围变量。我们可以在childScope中访问$ rootScope,在childScope中访问rootScope和parentScope。