2013-04-25 58 views
0

在我的网页中,主控制器需要使用$ http或getJSON从服务器调用数据来使用服务完成一些初始化。 页面上还有其他的子控制器,一旦主控制器完成数据加载,就不应该调用它。 如何在控制器中注入DI?

Edit1 ex: 与Call Angular controller from script onload类似的东西 服务调用服务器获取一些数据,一旦完成就通知其他人。 这可能吗?如何使一个页面中的儿童角控制器取决于页面的主控制器

+0

我不明白你所说的“在页面其他孩子控制器意味着什么不应该叫做”。你能解释一些吗? – 2013-04-25 03:56:31

+0

编辑的主要问题,例如 – user2025527 2013-04-25 04:43:40

+0

如果您希望在数据从服务器进入时更新视图,则可能不必通知他们...... Angular可以自动为您执行此操作。在控制器中,设置$ scope属性以引用服务属性,然后在您的视图中{{use}}。当数据从服务器返回时,Angular会注意到更改并更新您的视图。看到[这个问题](http://stackoverflow.com/questions/15342672/angularjs-using-a-service-as-a-model-ng-repeat-not-updating)为例。 – 2013-04-26 02:23:05

回答

2

看起来您应该查看$ scope,$ emit,$ scope。$ broadcast和$ scope。$以处理angularjs中事件的方法。

看看angular scope guide

的基本想法可能是这个样子:

$http.get("/api/stuff", function(data) 
    .then(function(data){ 
     $scope.$broadcast("apiLoad", data); 
    }, function(err){ 
     //do something with err 
    }) 

然后孩子控制器可以使用:

$scope.$on("apiLoad", function(event, data){ 
    //do something now that apiLoad is done. 
})