2016-01-08 12 views
0

讓我解釋一下我自己一個函數參數,調用它的4倍,並保持數據分離

我有這個功能在我的控制器

function postDashboardsData (dataType, dateFrom, dateTo) { 
    Api.post('rotations/' + vm.data[0]._id + '/dashboard', angular.extend({ 
     type : dataType, 
     date_range : { 
     from : dateFrom, 
     to : dateTo 
     } 
    }, vm.data)) 
    .then(function (data) { 
     $scope.overallData = data; 
    }); 
} 

然後我調用這個函數4次,以執行post不同的數據,每次我打電話的功能相同的路線:

postDashboardsData('overall', $scope.overall, $scope.overall1); 

postDashboardsData('clicks-conversion', $scope.clicksConv1, $scope.clicksConv); 

postDashboardsData('traffic-sources', $scope.traffic, $scope.traffic1); 

postDashboardsData('devices', $scope.devices, $scope.devices1); 

post完成,有些數據涉及到前端爲了讓我呈現它。

我遇到的問題是:

的唯一數據是可能的渲染是從最後的功能我在代碼中調用數據,因爲變量$scope.overallData = data;其被覆蓋。

我的意思是:當第一post完成後,data帶有從第一篇文章中,當第二post完成的數據,數據來源與第二後的數據,因此變量$scope.overallData現在保存數據從第二個post和刪除第一篇文章中的數據,等等。

那麼,我能做些什麼來執行post,但保持每個post的數據是分開的。

我想動態地做到這一點,所以我不必創建4個不同的功能。

+0

你會使用'data'的集合? – HassenPy

+0

@HassenPy我需要的是在視圖中呈現這些'posts'中的數據。 – TheUnnamed

+0

爲什麼你在'$ scope.overallData'中存儲所有東西?你能詳細說明你的用例嗎?爲什麼你不能使用服務? –

回答

0

假設overallData是一個數組

Array.prototype.push.apply($scope.overallData, data); 

哦,這將讓他們在服務調用完成的順序,而不是你叫的服務的順序。

1

您可以從帖子功能中刪除.then()並返回該承諾。

function postDashboardsData (dataType, dateFrom, dateTo) { 
    return Api.post('rotations/' + vm.data[0]._id + '/dashboard', 
     angular.extend({ 
     type : dataType, 
     date_range : { 
      from : dateFrom, 
      to : dateTo 
     } 
    }, vm.data)); 
} 

,然後使用鏈接呼叫者像這樣:

postDashboardsData('overall', $scope.overall, $scope.overall1) 
.then(function(data){ 
    // assign whatever you like 
}) 

postDashboardsData('clicks-conversion', $scope.clicksConv1, $scope.clicksConv) 
.then(function(data){ 
    // assign another variable 
}); 
+0

但實際上我得到一個錯誤'TypeError:無法讀取屬性'然後'未定義' – TheUnnamed

+0

你是否返回函數內的Api.post? – koox00

相關問題