2016-09-13 1 views
0

이 메시지는 여러 번 요청되었지만 ... 찾을 수 없습니다. 오후 10시 30 분 여기에 당신과 함께 그냥두고 가야 해!angularjs에서 제한 시간이 초과되었습니다.

기본적으로 json 서버 메소드에 두 건의 호출이 있습니다. 데이터를 업데이트하고 새 합계를 얻습니다. 논리적으로 업데이트 데이터가 먼저 호출되고 $ emit을 통해 새 합계를 가져 오는 알림을 보냅니다. 불행히도 서버 컨트롤러에 중단 점을 넣으면 SetAlertRead 전에 GetAlertTotals가 호출되므로 잘못된 데이터가 반환됩니다.

'합계'코드는 다른 컨트롤러이며, 따라서 $ 공개/가입/방출 :

$scope.$on('RefreshUnreadItemsCounter', function() { 
    $scope.alertCount = $scope.GetAlertCount(); 
    $scope.alertTotals = $scope.GetAlertTotals(); 
    $scope.$apply(); 
}); 

를 데이터는 이하의 (부분)의 정의와 더불어, uiGrid이다 :

$scope.gridOptions.onRegisterApi = function (gridApi) { 
    $scope.gridApi = gridApi; 
    $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.EDIT); 

    $scope.gridApi.selection.on.rowSelectionChanged($scope, function (row) { 
     var authorisationToken = $('input[name="__RequestVerificationToken"]').val(); 

     row.entity.AlertSeen = true; 
     $scope.message = row.entity.Message; 
     $http({ 
      url: '/Alerts/SetAlertRead', 
      contentType: "application/json; charset=utf-8", 
      method: 'POST', 
      data: { rowId: row.entity.UserAlertsId }, 
      headers: { '__RequestVerificationToken': authorisationToken } 
     }); 
     $scope.$emit('RefreshUnreadItemsCounter'); 
    }); 

사용자는 행을 클릭하여 행과 관련된 데이터를 표시하고 '읽습니다', json 호출 (/Alert/SetAlertRead)을 통해 데이터 업데이트를 트리거합니다. json 호출을 실행할 약속 시간을주기 위해 $ emit 호출 전에 시간 초과를 설정한다고 가정합니다. 그러나 확실하지 않습니다.

도와주세요! 마음에 들지 않으면 최대한 많은 코드가 필요합니다! 다시 한번 감사드립니다.

답변

0
으로 전화하면 해결되거나 거부 될 요청을 $ http없이받을 수 있습니다. finally()을 사용하여 두 경우를 모두 다루거나 then(successFunction, errorFunction)을 사용하여 해결 및 거부 사례를 별도로 처리 할 수 ​​있습니다. 코드를 다음 코드로 변경하십시오.
$scope.gridOptions.onRegisterApi = function (gridApi) { 
$scope.gridApi = gridApi; 
$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.EDIT); 

$scope.gridApi.selection.on.rowSelectionChanged($scope, function (row) { 
    var authorisationToken = $('input[name="__RequestVerificationToken"]').val(); 

    row.entity.AlertSeen = true; 
    $scope.message = row.entity.Message; 
    $http({ 
     url: '/Alerts/SetAlertRead', 
     contentType: "application/json; charset=utf-8", 
     method: 'POST', 
     data: { rowId: row.entity.UserAlertsId }, 
     headers: { '__RequestVerificationToken': authorisationToken } 
    }).then(function (response) { 
     $scope.$emit('RefreshUnreadItemsCounter'); 
    }, function (error) { 
     // case of rejected promise 
    }); 

}); 
+0

감사합니다. Andriy - 완벽한 명확성으로 문제를 해결했습니다. 나는 충분한 질문을 아직하지 않았기 때문에 나는 당신의 대답을 업 그레 이드 할 수 없다 ... 나는 2 년 밖에 등록되지 않았다 ... – Jerry