Angular的新手,我正试图弄清楚价值。我试图保存一个值,我可以在以后注入我的控制器,但由于某种原因,它打破了。如果你运行plnkr样本,它将工作,代码到达控制器。如果您注释掉第68行并取消注释67,则会破坏应用程序。第41行,我只是设置了一个值,这是我想要传递给我的控制器的。
为什么这不起作用?
答案 0 :(得分:1)
没有AppConfig ...如果要注入AppConfig,它必须存在于某处,指令,服务,工厂,SOMETHING。您目前没有加载一个。
答案 1 :(得分:0)
您的问题是时间问题。控制器在设置值之前创建,因此它无权访问。
如果您这样创建:
var mainApp = angular.module("Test", ["ui.router"]);
mainApp.value("AppConfig", 1.0);
然后您可以立即访问它。如果你必须异步设置它(即你计划将它设置为调用的结果),那么最好的方法可能是注入$ injector而不是AppConfig。然后你可以这样做:
if ($injector.has("AppConfig")) { value = $injector.get("AppConfig"); }
更好的办法可能是将其转移到一个服务中,该服务的承诺可以在获取值后返回该值,然后将其缓存以供后续调用。