2014-09-05 49 views
0

这里新增角度。我正在尝试将数据传递给工厂使用。我试图让事件以特定的顺序触发,在角度内使用$ http。我指出了使用.run做第一批人的方向,将它传递到工厂,然后传递给控制器​​。工厂有一个功能,可以让我“刷新”与控制器共享的数据。角度,使用.run预先填充数据然后传入工厂

我收到了一些很好的帮助设置刷新功能,但我挣扎着让数据最初填充。这是我的尝试:

.run("getDataForLevels", function($http){ 
    var getIt = $http.get("/assets/images/generated.json") 
     .success(function(data){ 
      return data; 
     }); 
    return getIt; 
}) 
.factory("UserService", function($http, getDataForLevels) { 

    dataFactory = getDataForLevels; 
    dataFactory.currentData = null; 

    dataFactory.update = function() { 
     return $http.get("/assets/images/generated.json") 
      .success(function(data){ 
       dataFactory.currentData = data; 
       return data; 
      }); 
    }; 

    return dataFactory; 

}); 

然后,我将UserService的依赖关系添加到控制器并将数据传递到控制器。我似乎在这个上下了一个错误[ng:areq]。任何/所有的帮助将不胜感激。谢谢!!

回答

0

你不能这样做:

.run("getDataForLevels", function($http){ 
    var getIt = $http.get("/assets/images/generated.json") 
    .success(function(data){ 
     return data; 

     }); 
    return getIt; 
}) 

只需要一个参数,一个函数。

,你可以这样做:

.run(function($http,$rootScope){ 
    $http.get("/assets/images/generated.json") 
    .success(function(data){ 
     $rotScope.data=data; 

     }); 
}) 

.factory("UserService", function($http, $rootScope) { 



    dataFactory.update = function() { 
     return $http.get("/assets/images/generated.json") 

    }; 

    return dataFactory; 

}); 
在控制器注入依赖

,做这样的:

var dataFactory = $rootScope.data; 
    dataFactory.currentData = null; 
UserService.update() 
     .success(function(data, status, headers) { 
     console.log(data); 
     }) 
     .error(function(data, status, headers, config) { 
     console.error('error in loading File list'); 
     }); 
+0

,因为如果我把它似乎这并没有使最初的起火前初始化,在控制器中的日志,userService返回未定义。我需要在工厂使用它们之前填充数据的东西,就像.then。 – ajmajmajma 2014-09-05 16:37:29

+0

尝试编辑的代码 – 2014-09-05 16:47:15

+0

这取消了控制器之间的双向数据绑定,我只是希望在控制器请求并使用它之前将数据加载到控制器中,然后才能刷新两个控制器之间正在使用的数据。看起来像这是每个控制器个人 – ajmajmajma 2014-09-05 18:29:17