2014-09-05 35 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