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

时间:2016-06-23 12:12:10

标签: javascript angularjs asp.net-mvc promise angular-promise

在控制器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控制器中的其他方法重用。

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

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)

给我一​​个错误。什么可以做得更整齐?我知道有很多冗余的代码行。

提前致谢。

1 个答案:

答案 0 :(得分: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);
        });
},