无法读取 属性 Angular JS 中未定义的成功

Cannot read property success of undefined in Angular JS

在控制器 A 中,我有一个方法可以在单击提交按钮时将数据存储在 MVC 控制器操作方法中。

$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 控制器中的其他方法重新使用此保存的数据。

我不想返回任何响应,只是确保 angular 中的 methodB() 在 MVC 中的数据保存后执行,我确实在获得成功响应后触发了一个事件

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

我知道这个 result.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)

向我抛出错误。有什么可以做得更整齐?我知道有很多冗余代码行。

提前致谢。

如果您的方法中没有 return,它将变为 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);
        });
},