Angular CRUD - 在 add/update/delete 操作后刷新 UI
Angular CRUD - Refresh UI after add/update/delete operation
我想知道在 Angular 中从 CRUD 执行 add/update/delete 操作时刷新 UI 会更好。
选项如下(以删除动作为例):
1. 执行操作后用先前获取的数据更新局部变量。
deleteProduct(id) {
this.productsService.deleteProduct(id).subscribe(status => {
this.products = this.products.filter(item => item.id != id);
});
}
2. 再次调用 REST 获取项目 API.
deleteProduct(id) {
this.productsService.deleteProduct(id).subscribe(status => {
this.getProducts();
});
}
getProducts() {
this.productsService.getProducts().subscribe(products => {
this.products = products;
});
}
这也适用于添加或编辑,显然需要更多代码。
就良好做法和性能而言,哪个选项更好?在本地更新变量数据或执行新的http请求以获取更新的数据。
第一种方法更受欢迎,它比第二种方法耗时更少,加载时间也很短。
我认为,这可能取决于您的项目。我在我的项目中使用以下流程(客户端[Angular] 应该跟随服务器)
(这里我用的是WEB API)
创建 : 最好return创建的Item如下
[HttpPost]
public ActionResult Post(Item item)
{
if (everything is ok)
{
// resourceUrl: the address of the source that we have just created
return Created(resourceUrl, item);
}
if (there is an error) {
return BadRequest();
}
}
要编辑 : 你不需要return任何项目,你应该return状态码(400[BadRequest]、200[OK]、204[NoContent] 等等)像下面这样:
[HttpPut("{id}")]
public ActionResult Put(Item item, int id)
{
var existingItem = (retrive item form db based on id);
if (existingItem == null) {
return BadRequest("Cannot update ...");
} else {
// update operation here ...
return Ok();
}
}
删除 - 你应该return状态码(400[BadRequest], 200 [确定]、204[NoContent] 等等)
编辑:
您不必遵循上述建议。您可以select您问题中的第一个建议(在执行操作后使用先前获取的数据更新局部变量。),这取决于您的项目。
我想这取决于你的应用。
显然第一种方法少了一个 api 调用并且速度更快。
但是假设你有一个高频度的其他用户对后端数据的操作。在那种情况下,在操作后刷新列表可能非常有用。
我想知道在 Angular 中从 CRUD 执行 add/update/delete 操作时刷新 UI 会更好。
选项如下(以删除动作为例):
1. 执行操作后用先前获取的数据更新局部变量。
deleteProduct(id) {
this.productsService.deleteProduct(id).subscribe(status => {
this.products = this.products.filter(item => item.id != id);
});
}
2. 再次调用 REST 获取项目 API.
deleteProduct(id) {
this.productsService.deleteProduct(id).subscribe(status => {
this.getProducts();
});
}
getProducts() {
this.productsService.getProducts().subscribe(products => {
this.products = products;
});
}
这也适用于添加或编辑,显然需要更多代码。
就良好做法和性能而言,哪个选项更好?在本地更新变量数据或执行新的http请求以获取更新的数据。
第一种方法更受欢迎,它比第二种方法耗时更少,加载时间也很短。
我认为,这可能取决于您的项目。我在我的项目中使用以下流程(客户端[Angular] 应该跟随服务器)
(这里我用的是WEB API)
创建 : 最好return创建的Item如下
[HttpPost]
public ActionResult Post(Item item)
{
if (everything is ok)
{
// resourceUrl: the address of the source that we have just created
return Created(resourceUrl, item);
}
if (there is an error) {
return BadRequest();
}
}
要编辑 : 你不需要return任何项目,你应该return状态码(400[BadRequest]、200[OK]、204[NoContent] 等等)像下面这样:
[HttpPut("{id}")]
public ActionResult Put(Item item, int id)
{
var existingItem = (retrive item form db based on id);
if (existingItem == null) {
return BadRequest("Cannot update ...");
} else {
// update operation here ...
return Ok();
}
}
删除 - 你应该return状态码(400[BadRequest], 200 [确定]、204[NoContent] 等等)
编辑:
您不必遵循上述建议。您可以select您问题中的第一个建议(在执行操作后使用先前获取的数据更新局部变量。),这取决于您的项目。
我想这取决于你的应用。
显然第一种方法少了一个 api 调用并且速度更快。
但是假设你有一个高频度的其他用户对后端数据的操作。在那种情况下,在操作后刷新列表可能非常有用。