2016-06-23 44 views
2

在控制器A中,我有一個方法,點擊提交按鈕將數據存儲在MVC控制器操作方法中。無法讀取在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); 
    }); 

我知道這個結果在。數據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

我不確定你在問什麼。對於這一部分:_但所有來自MVC_的回報,你是否擔心返回字符串「」成功「」是浪費?這並不是真正需要擔心的事情,但如果你願意的話,你可能會返回一個'null'響應。 – JLRishe

+0

是的,我很難編碼它。我只想確保在成功保存MVC後,我可以執行$ rootScope。$ emit,而不是在此之前。那麼這種方法好嗎? – StrugglingCoder

相關問題