Javascript 试图在angularjs中实现删除时显示未定义的id
正在尝试在angularjs中实现删除功能。asp.net中的后端工作正常。当我和邮递员核对时,工作正常。现在,我正努力为这件事做准备。当我按下删除按钮时。它没有得到油。它是这样显示的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) {
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>