3

1)我在 ng-init 中初始化了变量,例如-

ng-init="password='Mightybear'";

2)我想从 .run 方法访问它。例如 -

anguar.module("ngApp", [])
.run(function() {
//Access password here
});

在我尝试过但没有工作的情况下 -

1) angular.module("ngApp", [])
.run(function($rootScope) { 
console.log($rootScope.password) //undefined!!!
});

2) angular.module("ngApp", [])
.run(function($rootScope, $timeout) { 
$(timeout(function() {
console.log($rootScope.password) //undefined!!!
});
});
4

2 回答 2

3

您无法在run块内获取 ng-init 值

角生命周期

  1. 配置阶段 (app.config)($rootScope 将在此处不可用)
  2. 运行阶段 (app.run) ($rootScope 将在此处可用)
  3. 指令获取 Compile()
  4. 然后控制器,指令链接函数,过滤器等被执行。(ng-init在这里)

如果要在运行阶段获取初始化值,则需要在配置阶段设置该值。

如果您想在 config 中设置值,那么您可以使用app.constant/provider在配置阶段可用,不要使用$rootScope在 AngularJS 中被认为是不好的模式。

代码

var app = angular.module('app', []);

app.constant('settings', {
    title: 'My Title'
})

app.config(function(settings) {
    setting.title = 'Changed My Title';
    //here can you do other configurarion setting like route & init some variable
})

app.run(function(settings) {
    console.log(settings.title);
})
于 2015-04-29T10:30:07.130 回答
0

我会给你一个演练,角度负载是如何的

角度模块 ---> .config ----> .run ----> 控制器(ng-init)

现在你可以清除你的方法了。

于 2015-04-29T10:29:54.253 回答