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

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

在 Controller A 中,我有一个方法,单击提交按钮即可将数据存储在 MVC Controller 操作方法中。

$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);
    })
},

上传NativeMVC Controller

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 Controller 中的其他方法重用此保存的数据。

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

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

我知道 MVC 创建中的 result.data 是冗余

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,它将返回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);
        });
},

关于javascript - 无法读取 Angular JS 中未定义的属性成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37991276/

相关文章:

javascript - 使用验证消息的简单指令的奇怪行为

sql - 如何从数据库中逐一返回样本行

javascript - 助手如何通过名称动态调用组件,例如 {{component componentName}} 助手

javascript - 当用户在加载的页面之间导航时,加载指示器不显示(NextJS、ReactJS)

javascript - Vue 将数据传递给 POST 方法

javascript - 如何在映射循环中从 onClick 向函数发送唯一值

angularjs - Karma服务上的“No provider error”服务运行angularjs phonecat教程

javascript - AngularJS:如何以 Angular 隐藏单击的元素?

c# - 删除仅在登录页面中自动添加的 X-Frame-Options

c# - MVC Owin 提供程序 key 更改