2016-06-23 6 views
2

В контроллере A у меня есть метод, который при нажатии кнопки отправки сохраняет данные в методе действия контроллера MVC.Невозможно прочитать свойство undefined in Angular JS

$scope.groupmembership.submit = function() { 
    if ($scope.groupMembershipUserInputForm.$valid) { 
     $scope.groupmembershipUploadParams = { 
      "chapterCode": $scope.groupmembership.chapterCode, 
      "createdDate": $filter('date')(new Date($scope.groupmembership.createdDate), 'MM/dd/yyyy'), 
      "endDate": $filter('date')(new Date($scope.groupmembership.endDate), 'MM/dd/yyyy') 
     }; 

     UploadDataServices.getGroupMembershipUploadParams(
      $scope.groupmembershipUploadParams) 
      .success(function (result) { 
       $rootScope.$emit(
        'validateUploadedFilesEvent', 
        $scope.groupmembershipUploadParams 
       ); 
      }); 
    } 
} 

UploadDataServices.getGroupMembershipUploadParams

getGroupMembershipUploadParams: function(uploadParams){ 
    $http.post(BasePath + "uploadNative/setGroupMembershipUploadParams", uploadParams, { 
     headers: { 
      "Content-Type": "application/json", 
      "Accept": "application/json" 
     } 
    }).success(function (result) { 
     console.log(result); 
    }) 
}, 

контроллер uploadNativeMVC

public async Task<JsonResult> setGroupMembershipUploadParams(GroupMembershipUploadParams arg) 
{ 
    TempData["GroupMembershipUserUplaodDetails"] = arg; //Save the data for later use 
    var result = new JsonResult(); 
    result.Data = "Success"; // Return a Excel Upload Limit Exceeded 
    result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
    return result; 
} 

Это сохраненные данные, которые я хочу, чтобы повторно использовать другие методы в контроллере MVC в последующих вызовах.

Я не хочу никакого ответа назад, но только убедитесь, что methodB() в угловых выполняется после того, как данные в MVC сохраняется, я выстрелил событие после того, как я получаю ответ успеха

UploadDataServices.getGroupMembershipUploadParams(
    $scope.groupmembershipUploadParams) 
    .success(function (result) { 
     $rootScope.$emit('methodB', $scope.groupmembershipUploadParams); 
    }); 

Я знаю, что этот результат .data в создании MVC является избыточными,

var result = new JsonResult(); 
result.Data = "Success"; // Return a Excel Upload Limit Exceeded 
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
return result; 

но как убедиться, что

$rootScope.$emit('methodB', $scope.groupmembershipUploadParams); 

пожаротушения только после сохранения tempData.

UploadDataServices.getGroupMembershipUploadParams(
    $scope.groupmembershipUploadParams) 
    .success(function (result) 

- это ошибка. Что можно сделать более аккуратно? Я знаю, что существует много избыточных кодовых строк.

Заранее спасибо.

ответ

4

Если у вас нет return в вашем методе, он будет возвращать undefined. Вот почему вы получаете сообщение об ошибке.

Исправлено:

getGroupMembershipUploadParams: function(uploadParams){ 
    return $http.post(
     BasePath + "uploadNative/setGroupMembershipUploadParams", 
     uploadParams, 
     { 
      headers: { 
       "Content-Type": "application/json", 
       "Accept": "application/json" 
      } 
     }) 
     .success(function (result) { 
      console.log(result); 
     }); 
}, 
+0

Спасибо за ответ, но все возвращается из MVC только ради возвращения и проверки того, что события уволят только после успешного сохранения в MVC TempData нужны? Можем ли мы избежать этого? – StrugglingCoder

+0

Я не совсем уверен, что вы просите. Для этой части: _but все возвраты из MVC_, вы обеспокоены тем, что возвращение строки '' Success ''является расточительным? На самом деле не о чем беспокоиться, но вы можете, вероятно, вернуть ответ «null», если хотите. – JLRishe

+0

Да, я жестко его кодирую. Я просто хочу убедиться, что только после успешного сохранения в MVC я могу сделать $ rootScope. $ Emit, а не раньше этого. Так подходит ли этот подход? – StrugglingCoder

Смежные вопросы