Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图在angularjs中实现删除时显示未定义的id_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 试图在angularjs中实现删除时显示未定义的id

Javascript 试图在angularjs中实现删除时显示未定义的id,javascript,html,angularjs,Javascript,Html,Angularjs,正在尝试在angularjs中实现删除功能。asp.net中的后端工作正常。当我和邮递员核对时,工作正常。现在,我正努力为这件事做准备。当我按下删除按钮时。它没有得到油。它是这样显示的 http://localhost:50802/api/User/BUser/[object%20Object] 我是个新手。我不知道这个角度代码是否正确。另一件事是我还需要实现用户确认弹出窗口。请帮帮我 角度控制器 $scope.DeleteUser = function (data, UId) {

正在尝试在angularjs中实现删除功能。asp.net中的后端工作正常。当我和邮递员核对时,工作正常。现在,我正努力为这件事做准备。当我按下删除按钮时。它没有得到油。它是这样显示的

http://localhost:50802/api/User/BUser/[object%20Object]
我是个新手。我不知道这个角度代码是否正确。另一件事是我还需要实现用户确认弹出窗口。请帮帮我

角度控制器

$scope.DeleteUser = function (data, UId) {
        $http({
            method: "post",
            url: urls.api + 'User/BUser/' + UId,

            data: JSON.stringify(data)
        }).then(function (response) {
            alert(response.data);

        })
    };
HTML


{{d.description}}
{{d.path}
删去
这里是我的Asp.net控制器

[HttpDelete]
        [Route("DeleteBanner/{UId}")]
        public async Task<IHttpActionResult> DeleteBanner(int UId)
        {
            int? result = await _service.DeleteBannerAsync(UId);

            return Ok();

        }
[HttpDelete]
[路由(“DeleteBanner/{UId}”)]
公共异步任务DeleteBanner(int-UId)
{
int?result=wait_service.deletebanerasync(UId);
返回Ok();
}

您在控制器中的函数需要参数Id和数据,我假设您的数据指的是对象
,更改html如下:

  <td><button ng-click="DeleteUser(d)">Delete </button></td>

尝试此操作,将您的
tr
更改为

<tr ng-repeat="d in UserList">
  <td>{{d.description}}</td>
  <td>{{d.path}}</td>
  <td><button ng-click="DeleteUser(d, d.UId)">Delete </button></td>
</tr>

{{d.description}}
{{d.path}
删去

有许多模式可以遵循。但让我先回答你的问题,然后提出一个更好的模式: 您的ng click事件没有采用任何参数,它应该如下所示:

<tr ng-repeat="d in UserList">
  ...
  <td><button ng-click="DeleteUser(d.UId)">Delete </button></td>
</tr>
function deleteUser(id) {
    var url = urls.api + 'User/BUser/' + id;
    var deferred = $q.defer();
    $http.post(url, { params: { UId: id } })
        .then(success).catch(deferred.reject);
    return deferred.promise;

    function success(response) {
        var data = response && response.data;
        deferred.resolve(data);
    }
}
更好的模式:我建议控制器服务模式如下: 服务将类似于:

<tr ng-repeat="d in UserList">
  ...
  <td><button ng-click="DeleteUser(d.UId)">Delete </button></td>
</tr>
function deleteUser(id) {
    var url = urls.api + 'User/BUser/' + id;
    var deferred = $q.defer();
    $http.post(url, { params: { UId: id } })
        .then(success).catch(deferred.reject);
    return deferred.promise;

    function success(response) {
        var data = response && response.data;
        deferred.resolve(data);
    }
}
然后在控制器中

$scope.DeleteUser = function (id) {
    bootbox.confirm("Are you sure you want to delete this user?", function (result) {
        if (result) {
            /*
             * You can use Angular blockUI to show progress here
            */
            return userService.deleteUser(id).then(function (response) {
                alert(response);
            }).catch(function (error) {
                alert(error);
            }).finally(function () {
                 //You can stop the blockUI instance here.
                //appBlockUI.stop();
            });
        }
    });
}

这只是你研究这一思路的一个小贴士

谢谢你的宝贵意见。我发现了错误。在asp.net控制器中,我使用了HttpDelete。但是这里我用Post方法获取数据。这就是问题所在。 而且正如菲尔所说,我不需要在意那些
Json.stringify(数据)
的事情

答案是这样的

角度控制器

 $scope.DeleteUser = function (Uid) {
        deleteUser = $window.confirm('Are you sure you want to delete?');
        //console.log(Uid);
        if (deleteUser) { 
            $http({
                method: "Delete",
                url: urls.api + 'User/BUser/' + Uid,
            }).then(function (response) {
                alert(response.data);
            })
        }
    };
Html

删除

如果我浪费了你的时间,真的很抱歉。再次感谢

在ng click函数调用中,将参数传递给不需要字符串化数据的函数。这是怎么回事default@phil我是新来的。此代码取自教程。实际上我不知道这个代码是否有效。对不起,如果这是错的。你能提供一个有效的答案吗。@sachilaranawaka它不起作用,兄弟。我肯定会找到另一个教程,
数据
去了哪里?@Phil你不需要这个,实际上,他希望id被传递,
JSON.stringify(数据)
呢?那个
数据
变量来自哪里?是的,没错!他可能正在传递整个用户数据。您可以调试并检查是否传递了正确的值。谢谢您的注释。你能说说角度控制器的样子吗???@Coder使用的代码与你在问题中发布的代码相同:)
http://localhost:50802/api/User/BUser/[object%20Object]
在我实现后,它会显示此错误。为什么会这样?打印
数据
UId
,并拍摄其屏幕截图和相关更新
$scope.DeleteUser = function (id) {
    bootbox.confirm("Are you sure you want to delete this user?", function (result) {
        if (result) {
            /*
             * You can use Angular blockUI to show progress here
            */
            return userService.deleteUser(id).then(function (response) {
                alert(response);
            }).catch(function (error) {
                alert(error);
            }).finally(function () {
                 //You can stop the blockUI instance here.
                //appBlockUI.stop();
            });
        }
    });
}
 $scope.DeleteUser = function (Uid) {
        deleteUser = $window.confirm('Are you sure you want to delete?');
        //console.log(Uid);
        if (deleteUser) { 
            $http({
                method: "Delete",
                url: urls.api + 'User/BUser/' + Uid,
            }).then(function (response) {
                alert(response.data);
            })
        }
    };
<button ng-click="DeleteUser(d.Uid)">Delete </button>