使用angular.js TypeError:无法读取未定义的属性'UserId'

时间:2019-02-01 11:02:52

标签: angularjs

在我的有角度的应用程序中,我有这个包含删除服务的CrudService

app.service('CrudService', function ($http) {
this.delete = function (apiRoute, dataModel) {
    var request = $http({
        method: "delete",
        url: apiRoute
    });
    return request;
}
}) 

我有这个userCntrl

app.controller('userCtrl', ['$scope', 'CrudService',
$scope.DeleteUser = function (dataModel) {
        debugger
        var apiRoute = baseUrl + "users/" + dataModel.UserId;
        var deletedUser = CrudService.delete(apiRoute);

        deletedUser.then(function (response) {
            if (response.data != "") {
                alert("Data Delete Successfully");
                $scope.Clear();
                $scope.GetUsers()

            } else {
                alert("Some error");
            }
        }, function (error) {
            console.log("Error: " + error);
        })
    }
 }]);

在我的html

   <div ng-app="myapp">
   <div ng-controller="userCtrl">
    <div ng-view></div>
    <table class="table table-hover general-table">

        <thead class="grid-top-panel">
            <tr>
                <th style="display:none">StudentID</th>
                <th>Name</th>
                <th>Address</th>
                <th>Age</th>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="user in users">
                <td>{{user.FName}}</td>
                <td>{{user.Address}}</td>
                <td>{{user.Age}}</td>

                <td style="text-align:right; color:white">
                    <span>
                        <span id="save" class="btn btn-danger margin-right-btn"
                              ng-click="DeleteUser(dataModel)">
                            Delete
                        </span>
                    </span>
                </td>
            </tr>
        </tbody>

    </table>
</div>

当我尝试删除用户时,它给我一个错误,提示我无法读取未定义的UserId属性,但是我的数据库中有UserId表。

但是,例如,如果我将dataModel.UserId设置为3,它将删除ID为3的用户

有帮助吗??

1 个答案:

答案 0 :(得分:1)

首先,我看到您构建了要求两个参数的apiCrud,但是您只使用了第一个参数。

this.delete = function (apiRoute, dataModel) {
    var request = $http({
        method: "delete",
        url: apiRoute
    });
    return request;
}

调用它时,您也不会传递数据模型:

var deletedUser = CrudService.delete(apiRoute);

在哪里定义了dataModel变量?您确定dataModel会收集所选用户的数据吗?